官术网_书友最值得收藏!

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()函數先來判斷變量是否為數組類型。如果是,再進行其他操作。

主站蜘蛛池模板: 凤山市| 富阳市| 新泰市| 五莲县| 南川市| 伊金霍洛旗| 伊金霍洛旗| 宜兴市| 佛冈县| 阿合奇县| 平果县| 宜兰市| 云林县| 尉犁县| 五家渠市| 漠河县| 永福县| 安岳县| 衡山县| 乡城县| 轮台县| 扶沟县| 郴州市| 兴安县| 元朗区| 天等县| 德清县| 邵东县| 罗田县| 孝感市| 红桥区| 安顺市| 台北县| 炎陵县| 霸州市| 潞西市| 临洮县| 洛隆县| 德阳市| 巴彦县| 华蓥市|