- PHP從入門到精通(第4版)(軟件開發視頻大講堂)
- 明日科技
- 1238字
- 2020-11-28 17:36:33
4.2 循環控制語句
在4.1節中學習了條件判斷語句,可以根據條件選擇執行不同的語句。但有時需要重復使用某段代碼或函數,例如,如果要人工輸入“1*2*3*4…*100”,無疑是非常煩瑣的,但使用循環控制語句就能快速完成計算,下面來學習循環控制語句:while、do…while、for和foreach。
4.2.1 while循環語句
視頻講解:光盤\TM\lx\4\05 while循環語句.mp4
While語句是PHP中最簡單的循環語句,它的語法格式如下:
while (表達式){ 語句; }
當表達式的值為真時,將執行循環體內的PHP語句,執行結束后,再返回到表達式繼續進行判斷。直到表達式的值為假才跳出循環,執行下面的語句。
while循環語句的流程控制圖如圖4.7所示。

圖4.7 while語句的流程控制圖
【例4.5】本例將實現10以內偶數的輸出。1~10依次判斷是否為偶數,如果是,則輸出;如果不是,則繼續下一次循環。實例代碼如下:(實例位置:光盤\TM\sl\4\5)
<?php $num=1; //聲明一個整型變量$num $str="10以內的偶數為:"; //聲明一個字符變量$str while($num<=10){ //判斷變量$num是否小于10 if($num % 2==0){ //如果小于10,則判斷$num是否為偶數 $str.=$num.""; //如果當前變量為偶數,則添加到字符變量$str的后面 } $num++; //變量$num加1 } echo$str; //循環結束后,輸出字符串$str ?>
結果為:10以內的偶數為:2 4 6 8 10
4.2.2 do…while循環語句
視頻講解:光盤\TM\lx\4\06 do…while循環語句.mp4
while語句還有另一種形式,即do…while。兩者的區別在于,do…while要比while語句多循環一次。當while表達式的值為假時,while循環直接跳出當前循環;而do…while語句則是先執行一遍程序塊,然后再對表達式進行判斷。do…while語句的流程控制圖如圖4.8所示。

圖4.8 do…while循環語句的流程控制圖
【例4.6】下面通過兩個語句的運行對比來了解兩者的不同。實例代碼如下:(實例位置:光盤\TM\sl\4\6)
<?php $num=1; //聲明一個整型變量$num while($num! =1){ //使用while循環輸出 echo"while循環"; //這句話不會輸出 } do{ //使用do…while循環輸出 echo"do…while循環"; //這句話會輸出 }while($num ! = 1); ?>
結果為:do…while循環
4.2.3 for循環語句
視頻講解:光盤\TM\lx\4\07 for循環語句.mp4
for循環是PHP中最復雜的循環結構,它的語法格式如下:
for(初始化表達式;條件表達式;迭代表達式){ 語句; }
其中,初始化表達式在第一次循環時無條件取一次值;條件表達式在每次循環開始前求值,如果值為真,則執行循環體里面的語句,否則跳出循環,繼續往下執行;迭代表達式在每次循環后被執行。for循環語句的流程控制圖如圖4.9所示。

圖4.9 for循環語句的流程控制圖
【例4.7】下面通過for循環來計算100的階乘。實例代碼如下:(實例位置:光盤\TM\sl\4\7)
<?php $sum=1; //聲明整型變量$sum for ($i = 1; $i <=100; $i++){ $sum*=$i; //當$i小于100時,計算階乘 } echo "100! = ".$sum; ?>
結果為:100! = 9.33262154439E+157
注意
在for語句中無論采用循環變量遞增或遞減的方式,前提是一定要保證循環能夠結束,無期限的循環(死循環)將導致程序的崩潰。
4.2.4 foreach循環語句
視頻講解:光盤\TM\lx\4\08 foreach循環語句.mp4
foreach循環是PHP 4引進來的,只能用于數組。在PHP 5中,又增加了對對象的支持。該語句的語法格式如下:
foreach ($array as $value) 語句;
或
foreach ($array as $key => $value) 語句;
foreach語句將遍歷數組$array,每次循環時,將當前數組中的值賦給$value(或$key和$value),同時,數組指針向后移動直到遍歷結束。當使用foreach語句時,數組指針將自動被重置,所以不需要手動設置指針位置。
【例4.8】在本例中,應用foreach語句輸出數組中存儲的商品信息。實例代碼如下:(實例位置:光盤\TM\sl\4\8)
<?php $name = array("1"=>"智能機器人", "2"=>"數碼相機", "3"=>"天翼3G手機", "4"=>"瑞士手表"); $price = array("1"=>"14998元", "2"=>"2588元", "3"=>"2666元", "4"=>"66698元"); $counts = array("1"=>1, "2"=>1, "3"=>2, "4"=>1); echo '<table width="580" border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#c17e50"> <tr> <td width="145"align="center"bgcolor="#FFFFFF" class="STYLE1">商品名稱</td> <td width="145"align="center"bgcolor="#FFFFFF" class="STYLE1">價格</td> <td width="145"align="center"bgcolor="#FFFFFF" class="STYLE1">數量</td> <td width="145"align="center"bgcolor="#FFFFFF" class="STYLE1">金額</td> </tr>'; foreach($name as$key=>$value){ //以book數組做循環,輸出鍵和值 echo '<tr> <td height="25" align="center" bgcolor="#FFFFFF" class="STYLE2">'.$value.'</td> <td align="center" bgcolor="#FFFFFF" class="STYLE2">'.$price[$key].'</td> <td align="center" bgcolor="#FFFFFF" class="STYLE2">'.$counts[$key].'</td> <td align="center" bgcolor="#FFFFFF" class="STYLE2">'.$counts[$key]*$price[$key].'</td> </tr>'; } echo '</table>'; ?>
運行結果如圖4.10所示。

圖4.10 使用foreach語句輸出數組
注意
當試圖使用foreach語句用于其他數據類型或者未初始化的變量時會產生錯誤。為了避免這個問題,最好使用is_array()函數先來判斷變量是否為數組類型。如果是,再進行其他操作。
- TypeScript Blueprints
- Java系統分析與架構設計
- 機器學習系統:設計和實現
- Nexus規模化Scrum框架
- Java編程技術與項目實戰(第2版)
- BIM概論及Revit精講
- Java零基礎實戰
- iPhone應用開發從入門到精通
- Java EE 7 with GlassFish 4 Application Server
- 深入分析GCC
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- Java Web開發教程:基于Struts2+Hibernate+Spring
- Keil Cx51 V7.0單片機高級語言編程與μVision2應用實踐
- 網絡綜合布線與組網實戰指南
- Laravel 5.x Cookbook