- PHP+MySQL動態網站開發從入門到精通(視頻教學版)
- 張工廠
- 1777字
- 2021-01-08 17:30:24
4.6 循環控制結構
循環控制語句主要包括三種,即while循環、do…while循環和for循環。while循環在代碼運行的開始檢查表述的真假;而do…while循環則在代碼運行的末尾檢查表述的真假,這樣,do…while循環至少要運行一遍。
4.6.1 while循環語句
while循環的結構為:
while(條件判斷語句){ 命令執行語句; }
其中當“條件判斷語句”為true時,執行后面的“命令執行語句”,然后返回到條件表達式繼續進行判斷,直到表達式的值為假,才能跳出循環,執行后面的語句。
while循環語句的流程控制圖如圖4-17所示。

圖4-17 while語句控制流程圖
【例4.13】(實例文件:ch04\4.13.php)
<? php $num = 1; //定義變量$num $str = "20以內的奇數為:"; //定義變量$x while($num <=20){ //判斷$num是否小于或等于20 if($num % 2! = 0){ //判斷$num是否為奇數,為奇數則輸出,否則做加一操作 $str .= $num." "; } $num++; } echo $str; ?>
運行后結果如圖4-18所示。

圖4-18 程序運行結果
本實例主要實現20以內的奇數輸出。從1~20依次判斷是否為奇數,如果是,則輸出;如果不是,則繼續下一次的循環。
4.6.2 do…while循環語句
do…while循環的結構為:
do{ 命令執行語句; }while(條件判斷語句)
其中先執行do后面的“命令執行語句”,其中的變量會隨著命令的執行發生變化。當此變量通過while后的“條件判斷語句”判斷為false時,停止執行“命令執行語句”。
do…while循環語句的流程控制圖如圖4-19所示。

圖4-19 do…while循環語句控制流程圖
【例4.14】(實例文件:ch04\4.14.php)
<? php $aa = 0; //聲明一個整數變量$aa while($aa ! = 0){ //使用while循環輸出 echo "不會被執行的內容"; //這句話不會被輸出 } do{ //使用do…while循環輸出 echo "被執行的內容"; //這句話會被輸出 }while($aa ! = 0); ?>
運行后結果如圖4-20所示。從結果可以看出,while語句和do…while語句有很大的區別。

圖4-20 程序運行結果
4.6.3 for循環語句
for循環的結構為:
for(expr1; expr2; expr3) { 執行命令語句 }
其中expr1為條件的初始值,expr2為判斷的最終值,通常都使用比較表達式或邏輯表達式充當判斷的條件,執行完命令語句后,再執行expr3。
for循環語句的流程控制圖如圖4-21所示。

圖4-21 for循環語句控制流程圖
【例4.15】(實例文件:ch04\4.15.php)
<? php for($i=0; $i<4; $i++){ //使用for循環輸出 echo "for語句的功能非常強大<br/>"; } ?>
運行結果如圖4-22所示。從圖中可以看出,命令語句執行了4次。

圖4-22 程序運行結果
4.6.4 foreach循環語句
foreach語句是常用的一種循環語句,它經常被用來遍歷數組元素。它的格式為:
foreach(數組as數組元素){ 對數組元素的操作命令; }
可以根據數組的情況分為兩種,即不包含鍵值的數組和包含鍵值的數組。
不包含鍵值的:
foreach(數組as數組元素值){ 對數組元素的操作命令; }
包含鍵值的:
foreach(數組as鍵值 => 數組元素值){ 對數組元素的操作命令; }
每進行一次循環,當前數組元素的值就會被賦值給數組元素值變量,數組指針會逐一地移動,直到遍歷結束為止。
【例4.16】(實例文件:ch04\4.16.php)
<? php $arr=array("one", "two", "three"); foreach ($arr as $value) //使用foreach循環輸出 { echo "數組值: " . $value . "<br />"; } ?>
運行結果如圖4-23所示。從圖中可以看出,命令語句執行了3次。

圖4-23 程序運行結果
4.6.5 流程控制的另一種書寫格式
在一個含有多條件、多循環的語句中,包含多個“{}”,查看起來比較煩瑣。流程控制語言的另外一種書寫方式是以“:”來代替左邊的大括號,使用endif; 、endwhile、endfor、endforeach;和endswitch;來替代右邊的大括號,這種描述程序結構的可讀性比較強。常見的格式如下。
條件控制語句中的if語句:
if(條件判斷語句): 命令執行語句; elseif(條件判斷語句): 命令執行語句; elseif(條件判斷語句): 命令執行語句; … else: 命令執行語句; endif;
條件控制語句中的switch語句:
switch(條件判斷語句): case 可能結果a: 命令執行語句; case 可能結果b: 命令執行語句; … default: 命令執行語句; endswitch;
循環控制語句中的while循環:
while(條件判斷語句): 命令執行語句 endwhile;
循環控制語句中的do…while循環:
do 命令執行語句 while(條件判斷語句);
循環控制語句中的for循環:
for(起始表述;為真的布爾表述;增幅表述): 命令執行語句 endfor;
【例4.17】(實例文件:ch04\4.17.php)
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>楊輝三角</title> </head> <body> <? php $mixnum = 1; $maxnum = 10; $tmparr[][] = array(); $tmparr[0][0] = 1; for($i = 1; $i < $maxnum; $i++): for($j = 0; $j <= $i; $j++): if($j == 0 or $j == $i): $tmparr[$i][$j] = 1; else: $tmparr[$i][$j] = $tmparr[$i -1][$j -1] + $tmparr[$i -1][$j]; endif; endfor; endfor; foreach($tmparr as $value): foreach($value as $vl) echo $vl.' '; echo '<p>'; endforeach; ?> </body> </html>
運行結果如圖4-24所示。從效果圖可以看出,該代碼使用新的書寫格式實現了楊輝三角的排列輸出。

圖4-24 程序運行結果
4.6.6 使用break/continue語句跳出循環
使用break關鍵字,用來跳出(也就是終止)循環控制語句和條件控制語句中的switch語句的執行。例如:
<? php $n = 0; while (++$n) { switch ($n) { case 1: echo "case one"; break ; case 2: echo "case two"; break 2; default: echo "case three"; break 1; } } ?>
在這段程序中,while循環控制語句里面包含一個switch流程控制語句。在程序執行到break語句時,break會終止執行switch語句,或者是switch和while語句。其中在 “case 1”下的break語句跳出switch語句。“case 2”下的break 2語句跳出switch語句和包含switch的while語句。“case 3”下的break 1語句和“case 1”下的break語句一樣,只是跳出switch語句。其中,break后帶的數字參數是指break要跳出的控制語句結構的層數。
使用continue關鍵字的作用是,跳開當前的循環迭代項,直接進入到下一個循環迭代項,繼續執行程序。下面通過一個實例說明此關鍵字作用。
【例4.18】(實例文件:ch04\4.18.php)
<? php $n = 0; while ($n++ < 6) { //使用while循環輸出 if ($n == 2){ continue; } echo $n."<br />"; } ?>
運行結果如圖4-25所示。

圖4-25 程序運行結果
其中continue關鍵字,在當n等于2的時候,跳出本次循環,并且直接進入到下一個循環迭代項,即當n等于3。另外,continue關鍵字和break關鍵字一樣,都可以在后面直接跟一個數字參數,用來表示跳開循環的結構層數。“continue”和“continue 1”相同,“continue 2”表示跳開所在循環和上一級循環的當前迭代項。
- 國際大學生程序設計競賽中山大學內部選拔真題解(二)
- SQL Server 2012數據庫技術及應用(微課版·第5版)
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- Kubernetes源碼剖析
- 玩轉.NET Micro Framework移植:基于STM32F10x處理器
- Appcelerator Titanium:Patterns and Best Practices
- PHP+MySQL Web應用開發教程
- Clojure for Finance
- Java面試一戰到底(基礎卷)
- MySQL核心技術與最佳實踐
- 現代JavaScript編程:經典范例與實踐技巧
- 趣味掌控板編程
- 新手學ASP.NET 3.5網絡開發
- Learning Scrapy
- 寫給所有人的編程思維