迴圈控制語句
條件控制語句,可以根據條件選擇執行不同的語句。但有時需要重複使用某段代碼或函數。
while迴圈語句
while迴圈是PHP中最簡單的迴圈語句,它的文法格式為:
while(expr){ statement;}
當運算式expr的值為真時,將執行statement語句,執行結束後,再返回到expr運算式繼續進行判斷。直到運算式的值為假,才跳出迴圈,執行下面的語句。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>PHP語言基礎</title></head><body><?phpheader("Content-Type:text/html; charset=gb2312");$num=1;$str="10以內的偶數為:";while($num <= 10){ if($num % 2 == 0){ $str.=$num." "; } $num++;}echo $str;?></body></html>
運行結果:
10以內的偶數為:2 4 6 8 10
do…while迴圈語句
while語句還有另一種形式的表示,即do…while。兩者的區別在於,do…while要比while語句多迴圈一次。當while運算式的值為假時,while迴圈直接跳出當前迴圈;而do…while語句則是先執行一遍程式塊,然後再對條件運算式進行判斷。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>PHP語言基礎</title></head><body><?phpheader("Content-Type:text/html; charset=gb2312");$num=1;while($num != 1){ echo "不會看到";}do{ echo "會看到";}while($num != 1);?></body></html>
運行結果:
會看到
for迴圈語句
for迴圈是PHP中最複雜的迴圈結構,它的文法格式為:
for(expr1;expr2;expr3){ statement;}
其中,expr1在第一次迴圈時無條件取一次值;expr2在每次迴圈開始前求值,如果值為真,這執行statement,否則跳出迴圈,繼續往下執行;expr3在每次迴圈後被執行。
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>PHP語言基礎</title></head><body><?phpheader("Content-Type:text/html; charset=gb2312");$num=1;for($i=1;$i <= 100;$i++){ $num*=$i;}echo "100!=".$num;?></body></html>
運行結果:
100!=9.3326215443944E+157
foreach迴圈語句
foreach迴圈時PHP4引進來的,只能用於數組,在PHP5中,又增加了對對象的支援。文法格式:
foreach(array_expression as $value) statement;
或
foreach(array_expression as $key => $value) statenment;
<!DOCTYPE html ><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>PHP語言基礎</title></head><body><?phpheader("Content-Type:text/html; charset=gb2312");$name=array("1"=>"Jack","2"=>"Ben","3"=>"Bill");foreach($name as $key => $value){ echo " ".$name[$key];}?></body></html>
運行結果:
Jack Ben Bill
流程式控制制的另一種書寫格式
在一個複雜的PHP頁面中,可能包含多個條件控制語句、迴圈控制語句和函數,僅尋找匹配的大括弧“{}”就非常麻煩。為此,PHP提供了另一種書寫格式,包括if、while、for、foreach和switch都可以使用。書寫格式的基本形式是:使用冒號”:”來代替左邊的大括弧“{”;使用endif;、endwhile、endfor、endforeach;和endswitch;來的代替右邊的大括弧“}”。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>PHP語言基礎</title></head><body><?phpheader("Content-Type:text/html; charset=gb2312");$ss=2;$max=1000;$arr=array();echo $max."以內的素數為:";while($ss < $max): $boo=false; foreach($arr as $value): if($ss % $value ==0): $boo=true; break; endif; endforeach; if(!$boo): echo $ss." "; $arr[count($arr)]=$ss; endif; $ss++;endwhile;?></body></html>
運行結果:
1000以內的素數為:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997
使用break/continue語句跳出迴圈
在使用迴圈語句時,有時不確定迴圈的次數,遇到這種情況可以使用無限迴圈,如:
while(true){ ...}
或
for(;;){ ...}
只有當程式塊滿足一定條件後才跳出迴圈,跳出迴圈使用的關鍵字是break和continue。
break關鍵字可以終止當前的迴圈,包括while、do…while、for、foreach和switch 在內的所有控制語句。
break語句不僅可以跳出當前的迴圈,還可以指定跳出幾層迴圈,格式為:
break $num;
參數$num 指定要跳出幾層迴圈。
continue關鍵字的作用沒有break強大,continue只能終止本次迴圈而進入到下一次迴圈中,continue也可以指定跳出幾重迴圈。