1?實(shí)踐目的與任務(wù)
(1)PHP編輯編譯環(huán)境安裝與配置;
(2)PHP變量定義宫莱、語(yǔ)法丈攒、語(yǔ)句的使用;
(3)PHP頁(yè)面的編寫(xiě)授霸;
(4)PHP頁(yè)面提交數(shù)據(jù)的采集巡验、處理;
2?使用的工具碘耳、環(huán)境配置显设、知識(shí)點(diǎn)等
(1)Eclipse for PHP等PHP編輯工具、phpStudy等網(wǎng)頁(yè)運(yùn)行集成環(huán)境辛辨;
(2)安裝以上軟件的計(jì)算機(jī)捕捂;
3?實(shí)踐內(nèi)容及要求
(1)
配置phpStudy測(cè)試Web服務(wù)器正常運(yùn)行,配置Eclipse for PHP編輯環(huán)境斗搞,使用phpStudy環(huán)境在Eclipse for PHP上運(yùn)行調(diào)試PHP代碼指攒。調(diào)試配置參考如下:
[XDebug]
zend_extension="C:\phpStudy\PHPTutorial\php\php-5.4.45\ext\php_xdebug.dll"
;函數(shù)調(diào)用跟蹤信息輸出文件目錄,默認(rèn)值為/tmp
xdebug.trace_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.auto_trace = On
;性能分析文件的存放位置僻焚,默認(rèn)值為/tmp
xdebug.profiler_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.profiler_enable=On
;是否允許Xdebug跟蹤函數(shù)參數(shù)允悦,默認(rèn)值為0
xdebug.collect_params = On
;是否允許Xdebug跟蹤函數(shù)返回值,默認(rèn)值為
xdebug.collect_return = On
;是否收集指定作用域中的變量信息虑啤,利用xdebug_get_declared_vars()函數(shù)隙弛,那么就需要開(kāi)啟該設(shè)置了
;xdebug.collect_vars = On
;在異常出現(xiàn)時(shí)甚至是該異常被捕捉也會(huì)顯示其堆棧跟蹤信息
xdebug.show_exception_trace = On
;遠(yuǎn)程調(diào)試設(shè)置
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
;任何運(yùn)行情況下都開(kāi)啟調(diào)試
xdebug.remote_autostart = Off
(2)
在Web服務(wù)器下編寫(xiě)包含如下form標(biāo)簽的完整網(wǎng)頁(yè)input.html架馋,輸入多個(gè)十進(jìn)制正整數(shù):<form action="calculate.php"method="post" enctype="multipart/form-data">輸入操作數(shù):<br/>數(shù)1:<inputtype="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>數(shù)2:<inputtype="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>數(shù)3:<inputtype="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>數(shù)4:<input type="text"name="operands[]" value="輸入運(yùn)算數(shù)"/><br/>數(shù)5:<inputtype="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>提交按鈕:<input type="submit" name="submit1"value="普通提交按鈕"/><br/>圖片按鈕:<input type="image" name="submit2"src="http://www.google.cn/intl/zh-CN/images/logo.gif"height="40" /><br/>重置按鈕:<input type="reset" name="cancel"value="重新填寫(xiě)"/></form>? ? ??
(3)
在Web服務(wù)器下編寫(xiě)文件calculate.php,在其中能夠獲取瀏覽器端訪問(wèn)input.html頁(yè)面時(shí)在form標(biāo)簽中提交的信息驶鹉,上傳文件绩蜻,并正確返回瀏覽器以下結(jié)果:數(shù)1的逆序,數(shù)2和數(shù)3的最小公倍數(shù)室埋,數(shù)4的二進(jìn)制,數(shù)5的十六進(jìn)制伊约;
4?需求分析和功能描述
4.1?數(shù)據(jù)結(jié)構(gòu)表示與存儲(chǔ)需求分析
用“指針”與“數(shù)組”來(lái)存儲(chǔ)用戶在form表單中提交的數(shù)據(jù)信息姚淆。
在input.html文件中,用數(shù)組來(lái)存儲(chǔ)用戶輸入的5個(gè)數(shù)字信息屡律,然后提交form表單后腌逢,用“指針”來(lái)存儲(chǔ)數(shù)據(jù)信息。
用foreach(array as $value)來(lái)遍歷數(shù)組比較方便超埋,其功能如下:
foreach(array as $value)
使用該方法循環(huán)遍歷給定的數(shù)組array搏讶,每次循環(huán)中,“當(dāng)前指針”所指元素的“值”賦給變量$value霍殴,然后移動(dòng)數(shù)組array“當(dāng)前指針”媒惕,使“當(dāng)前指針”指向下一個(gè)元素,周而復(fù)始来庭,直至數(shù)組array最后一個(gè)元素妒蔚,此時(shí)“當(dāng)前指針”為空。
4.2?操作與功能分析
編寫(xiě)好input.html文件后月弛,需要將用戶輸入的信息“傳輸”至calculate.php文件中肴盏,然后在calculate.php文件編寫(xiě)相關(guān)的代碼,對(duì)數(shù)1帽衙、數(shù)2菜皂、數(shù)3、數(shù)4厉萝、數(shù)5進(jìn)行操作恍飘。
5?系統(tǒng)總體設(shè)計(jì)
5.1? 輸入與流程順序
用form表單及相關(guān)標(biāo)簽接收用戶輸入的信息。如冀泻,<input />標(biāo)簽常侣,通過(guò)設(shè)置<input />標(biāo)簽中的name值罪帖,將用戶輸入的數(shù)據(jù)組成一個(gè)數(shù)組但两,然后統(tǒng)一提交至calculate.php文件中。
5.2? 系統(tǒng)功能模塊設(shè)計(jì)
系統(tǒng)功能有:處理用戶輸入的數(shù)據(jù)羽嫡,如:返回?cái)?shù)字1的逆序數(shù)肢专、求數(shù)字2與數(shù)字3的最小公倍數(shù)舞肆、將數(shù)字4轉(zhuǎn)化為二進(jìn)制數(shù)字輸出焦辅、將數(shù)字5轉(zhuǎn)化為十六進(jìn)制數(shù)字輸出。重置表單信息椿胯、點(diǎn)擊圖片按鈕提交表單筷登。
表單按鈕部分較為簡(jiǎn)單,直接設(shè)置<input />標(biāo)簽的相關(guān)屬性就可以了哩盲。
數(shù)據(jù)處理部分較為困難前方,需要新建數(shù)組,然后逐個(gè)對(duì)數(shù)據(jù)進(jìn)行處理廉油。
5.3? 數(shù)據(jù)結(jié)構(gòu)和流程設(shè)計(jì)
在input.html文件中惠险,用“數(shù)組”存儲(chǔ)用戶輸入的數(shù)據(jù);用戶提交表單后抒线,在calculate.php文件中用“鏈表”來(lái)存儲(chǔ)數(shù)據(jù)班巩。創(chuàng)建新數(shù)組,用來(lái)存儲(chǔ)用戶輸入的數(shù)據(jù)嘶炭,然后遍歷新建數(shù)組抱慌,對(duì)數(shù)據(jù)進(jìn)行處理。
6?詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程
(具體功能實(shí)現(xiàn)等眨猎,可自由添加其它內(nèi)容抑进、部分源代碼等)
6.1? 學(xué)生信息等結(jié)構(gòu)設(shè)計(jì)與描述(寫(xiě)出你所設(shè)計(jì)的數(shù)組或鏈表等其他形式的變量)
foreach ()函數(shù)???循環(huán)遍歷給定的數(shù)組
implode() 函數(shù)??把數(shù)組元素組合為字符串。
array_reverse()函數(shù)以相反的元素順序返回?cái)?shù)組宵呛。
str_split()函數(shù)???把字符串分割到數(shù)組中单匣。
max()函數(shù)??????返回一個(gè)數(shù)組中的最大值,或者幾個(gè)指定值中的最大值宝穗。
decbin()函數(shù)????把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)户秤。
dechex() 函數(shù)??把十進(jìn)制轉(zhuǎn)換為十六進(jìn)制。
6.2?主要函數(shù)設(shè)計(jì)(列出你所設(shè)計(jì)的函數(shù)聲明語(yǔ)句逮矛,每個(gè)聲明后需有注釋?zhuān)砻髟摵瘮?shù)功能)
foreach ()函數(shù)???循環(huán)遍歷給定的數(shù)組
implode() 函數(shù)??把數(shù)組元素組合為字符串鸡号。
array_reverse()函數(shù)以相反的元素順序返回?cái)?shù)組。
str_split()函數(shù)???把字符串分割到數(shù)組中须鼎。
max()函數(shù)??????返回一個(gè)數(shù)組中的最大值鲸伴,或者幾個(gè)指定值中的最大值。
decbin()函數(shù)????把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)晋控。
dechex() 函數(shù)??把十進(jìn)制轉(zhuǎn)換為十六進(jìn)制汞窗。
7?功能展示
(功能展示圖,說(shuō)明等)
8?實(shí)踐收獲
此次實(shí)驗(yàn)赡译,難度較大仲吏。在實(shí)驗(yàn)的過(guò)程中,收獲了很多知識(shí),解決了很多疑惑裹唆。在瀏覽器地址欄中輸入文件所在位置誓斥,就可以運(yùn)行此文件,感到PHP語(yǔ)言十分靈活许帐。
在實(shí)驗(yàn)過(guò)程中劳坑,遇到的最大的困難就是:將form表單中的5個(gè)數(shù)據(jù)提交后,如何遍歷數(shù)組成畦,使得程序人員可以逐個(gè)對(duì)數(shù)據(jù)進(jìn)行處理距芬。困擾了我好長(zhǎng)時(shí)間。參考課本98頁(yè)對(duì)foreach語(yǔ)言結(jié)構(gòu)的講述以及127頁(yè)具體運(yùn)用foreach數(shù)據(jù)結(jié)構(gòu)的代碼羡鸥,我還是沒(méi)有想到逐個(gè)遍歷數(shù)組的方法蔑穴。在百度上搜尋了foreach語(yǔ)言結(jié)構(gòu)的相關(guān)知識(shí)后,我漸漸對(duì)foreach語(yǔ)言結(jié)構(gòu)有了更深的理解惧浴。foreach($_POST['operands']
as $a[]) {}語(yǔ)句,可以將數(shù)組中的數(shù)據(jù)元素逐個(gè)存放在一個(gè)新的數(shù)組中奕剃,非常容易遍歷數(shù)組衷旅、對(duì)數(shù)組中的各個(gè)數(shù)據(jù)進(jìn)行處理。
在實(shí)驗(yàn)中還有很多疑惑纵朋。比如柿顶,漢字亂碼。為什么我在PHP文件中加入了“header("Content-Type:
text/html;charset=utf-8");”語(yǔ)句操软,依舊無(wú)法完全解決亂碼問(wèn)題嘁锯?在我編寫(xiě)的其它PHP文件中,加入“header("Content-Type:
text/html;charset=utf-8");”語(yǔ)句后聂薪,亂碼問(wèn)題得到了很好的解決家乘。在百度上搜了很多篇文章,都沒(méi)有解決我的疑惑藏澳!我準(zhǔn)備問(wèn)問(wèn)老師或同學(xué)們仁锯。
我認(rèn)為我的程序還有很多可以改進(jìn)的地方。例如翔悠,在calculate.php文件中對(duì)數(shù)組進(jìn)行遍歷的操作业崖。我認(rèn)為可以用for()循環(huán)對(duì)數(shù)組進(jìn)行遍歷。在for()循環(huán)語(yǔ)句中蓄愁,加上限制條件双炕,如:判斷當(dāng)前數(shù)字是數(shù)組的第幾個(gè)元素,根據(jù)元素所處序號(hào)選擇不同的操作方法對(duì)數(shù)據(jù)進(jìn)行處理撮抓。我認(rèn)為這樣會(huì)令程序更加靈活妇斤、更具可讀性。
此外,我認(rèn)為還可以在用戶輸入數(shù)據(jù)的時(shí)候趟济,對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證乱投。驗(yàn)證用戶所輸入的內(nèi)容是不是數(shù)字。這在一定程度上可以解決亂碼的問(wèn)題顷编。
9? 附錄
9.1?關(guān)鍵性代碼
(可加部分關(guān)鍵性代碼戚炫,不超過(guò)3頁(yè);說(shuō)明等)