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

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”表示跳開所在循環和上一級循環的當前迭代項。

主站蜘蛛池模板: 四川省| 齐齐哈尔市| 兴海县| 玉山县| 运城市| 瓮安县| 平遥县| 万盛区| 金阳县| 龙南县| 娄底市| 泸定县| 平舆县| 福泉市| 金溪县| 张家界市| 克拉玛依市| 新晃| 盘山县| 孟连| 囊谦县| 饶阳县| 历史| 攀枝花市| 新昌县| 萍乡市| 商洛市| 嵊泗县| 天祝| 凭祥市| 永和县| 大姚县| 登封市| 临漳县| 利津县| 井研县| 抚顺市| 廉江市| 九寨沟县| 嘉鱼县| 古浪县|