流程控制的替代方法
在網(wǎng)站建設里,PHP提供了一些流程控制的替代語(yǔ)法,包括if、switch、while、for、foreach。替代語(yǔ)法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成endif;、endswitch;、endwhile;、endfor;和endforeach;。如:
<?phpif ($a == 1): echo "a=1";elseif ($a == 2) echo "a=2";else: echo "a<>1、2";endif;?>
break控制流程語(yǔ)句
break語(yǔ)句能夠結束當前for、foreach、while、do-while或者switch結構的執行。同時(shí)break可以接受一個(gè)可選的數字參數來(lái)決定跳出幾重循環(huán)。如:<?php$i = 0;while (++$i) { switch ($i) { case 5: echo " 5<br />\n"; break 1; /*只退出switch */ case 10: echo " 10 <br />\n"; break 2; /*退出switch和while循環(huán)*/ default: break; }}?>
continue控制流程語(yǔ)句
continue在循環(huán)結構用來(lái)跳過(guò)本次循環(huán)中剩余的代碼,并在條件求值為真時(shí)開(kāi)始執行下一次循環(huán)。它可以接受一個(gè)可選的數字參數來(lái)決定跳過(guò)幾重循環(huán)到循環(huán)結尾。如:
<?php$i = 0;while ($i++ < 5) { echo "3層循環(huán)<br />\n"; while (1) { echo " 2重循環(huán)<br />\n"; while (1) { echo " 1重循環(huán)<br />\n"; continue 3; } echo "不輸出該句<br />\n"; } echo "不執行該句<br />\n";}?>
注意:在PHP中switch語(yǔ)句被認為是可以使用continue的一種循環(huán)結構。
goto控制流程語(yǔ)句
goto語(yǔ)句可以用來(lái)跳轉到程序中的某一指定位置。該目標位置可以用目標名稱(chēng)加上冒號來(lái)標記。如:
<?phpgoto a;echo 1;a:echo 2;?>
在上面示例中,將輸出2,而不是1。PHP中的goto有一定限制,只能在同一個(gè)文件和作用域中跳轉,也就是說(shuō)無(wú)法跳出一個(gè)函數或類(lèi)方法,也無(wú)法跳入到另一個(gè)函數。同時(shí)也無(wú)法跳入到任何循環(huán)或者switch結構中。常見(jiàn)的用法是用來(lái)跳出循環(huán)或者switch,可以代替多層的break。該語(yǔ)句僅在PHP 5.3及以上版本有效。
include和require控制流程語(yǔ)句
include和require語(yǔ)句包含并運行指定文件。這兩種結構除了在如何處理失敗之外完全一樣。in-clude產(chǎn)生一個(gè)警告,而require則會(huì )導致一個(gè)致命錯誤。換句話(huà)說(shuō),如果想在遇到丟失文件時(shí)停止處理頁(yè)面就用require。include就不是這樣,腳本會(huì )繼續運行。同時(shí)也要確認設置了合適的include-path。
include和require語(yǔ)句尋找包含文件的順序先是在當前工作目錄的相對的include-path下尋找,然后是當前運行腳本所在目錄相對的include-path下尋找。例如,include-path是.,當前工作目錄是/www/,腳本中要include一個(gè)include/a.php,且在該文件中有一句include "b.php",則尋找b.php的順序先是/www/,然后是/www/include/。如果文件名以./或者../開(kāi)始,則只在當前工作目錄相對的include-path下尋找。當一個(gè)文件被包含時(shí),其中所包含的代碼繼承了include所在行的變量范圍。從該處開(kāi)始,調用文件在該行處可用的任何變量在被調用的文件中也都可用。不過(guò)所有在包含文件中定義的函數和類(lèi)都具有全局作用域。
例如,新建vars.php文件:
<?php$color = 'green';$fruit = 'apple';?>
再創(chuàng )建test.php文件:
<?phpecho "A $color $fruit"; // Ainclude 'vars.php';echo "A $color $fruit";?>
如果include出現于調用文件中的一個(gè)函數里,則被調用的文件中所包含的所有代碼將表現得如同它們是在該函數內部定義的一樣,所以它將遵循該函數的變量范圍。
<?phpfunction foo(){ global $color; include 'vars.php'; echo "A $color $fruit";}foo();echo "A $color $fruit";?>
當一個(gè)文件被包含時(shí),語(yǔ)法解析器在目標文件的開(kāi)頭脫離PHP模式并進(jìn)入HTML模式,到文件結尾處恢復。由于此原因,目標文件中應被當作PHP代碼執行的任何代碼都必須被包括在有效的PHP起始和結束標記之中。
當前文章標題:PHP流程控制(3)
當前URL:http://amzcoolest.com/news/wzzz/3246.html
上一篇:PHP流程控制(2)
下一篇:PHP函數(1)