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

2.11 循環控制語句

循環控制語句可以根據給定的條件,多次重復執行某段代碼塊或函數,從而避免編寫煩瑣的、重復的代碼。

在PHP中,可以使用while、do…while、for和foreach四種循環控制語句。

注意:每種循環都要保證條件表達式的正確性,即保證循環能夠結束,死循環(無限期的循環)必然導致程序崩潰。

2.11.1 while

while語句是最基本的循環控制語句,語法格式如下。

while (expr)
{
   statement;
}

其中,expr為條件表達式;statement為語句組。

如果條件表達式expr為真,則執行statement語句組。執行結束后,再繼續判斷條件表達式expr,直到條件表達式expr為假時,才跳出循環。

【實例2-47(49_While_Statement.php)】 使用while循環控制語句輸出10以內的奇數。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $num = 1;          //定義一個整型變量
  echo'10以內的奇數有:';  //顯示結果
  //循環
  while ($num <= 10)
  {
    //判斷是否為奇數
    if ($num% 2 == 1)
    {
      echo $num.' ';  //顯示結果
    }
    $num++;            //$num遞增
  }
?>

運行結果如圖2-47所示。

2d47

圖2-47 while循環控制語句

2.11.2 do…while

do…while語句是while循環控制語句的另一種表示形式,語法格式如下。

do
{
   statement;
}
while (expr);

其中,expr為條件表達式;statement為語句組。

先執行statement語句組,執行結束后再判斷條件表達式expr,直到條件表達式expr為假時,才跳出循環。

注意:do…while循環控制語句中的while(expr)后面必須加上分號“;”。

說明:do…while循環控制語句和while循環控制語句的區別在于,while循環控制語句是先判斷再執行,而do…while循環控制語句是先執行后判斷。因此,do…while循環控制語句比while循環控制語句多循環一次。

【實例2-48(50_Do_While_Statement.php)】 使用do…while循環控制語句輸出10以內的奇數。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $num = 1;  //定義一個整型變量
  echo'10以內的奇數有:';   //顯示結果
  //循環
  do
  {
    //判斷是否為奇數
    if ($num% 2 == 1)
    {
      echo $num.' ';  //顯示結果
    }
    $num++;            //$num遞增
  }
  while ($num<= 10);
?>

運行結果如圖2-48所示。

2d48

圖2-48 do…while循環控制語句

2.11.3 for

for語句是最常用的循環控制語句,語法格式如下。

for (expr1; expr2; expr3)
{
   statement;
}

其中,expr1為賦值表達式;expr2為條件表達式;expr3為運算表達式。

循環開始前,首先執行賦值表達式expr1,然后判斷條件表達式expr2,如果條件表達式expr2為真,則執行statement語句組,執行結束后,執行運算表達式expr3,直到條件表達式expr2為假時,才跳出循環。

【實例2-49(51_For_Statement.php)】 使用for循環控制語句輸出10以內的奇數。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $num = 1;         //定義一個整型變量
  echo'10以內的奇數有:';  //顯示結果
  //循環
  for ($num = 1; $num <= 10; $num++)
  {
    //判斷是否為奇數
    if ($num% 2 == 1)
    {
      echo $num.' ';  //顯示結果
    }
  }
?>

運行結果如圖2-49所示。

2d49

圖2-49 for循環控制語句

2.11.4 foreach

p85

【循環控制語句】

foreach語句與上述三種循環控制語句不同,其主要作用是遍歷數組,語法格式如下。

foreach (array_expression as $value)
{
   statement;
}

foreach (array_expression as $key => $value)
{
   statement;
}

其中,array_expression為需要遍歷的數組;“$key”為數組元素的索引;$value為數組元素的值;statement為語句組。

每次循環時,將當前數組元素中的索引賦值給$key,值賦值給$value,然后將數組指針向后移動,直到遍歷結束。

說明:使用foreach循環控制語句時,數組指針會自動重置,因此不需要手動設置指針位置。

【實例2-50(52_Foreach_Statement.php)】 定義一個存放this、is、an、array的數組,然后使用foreach循環控制語句遍歷該數組,并輸出每個元素的值。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $arr = array('this', 'is', 'an', 'array');  //定義一個數組
  print_r($arr);  //輸出數組結構
  echo '<br/>數組元素的值:';                   //換行
  //遍歷數組
  foreach ($arr as $value)
  {
    echo $value.' ';                        //顯示結果
  }
?>

運行結果如圖2-50所示。

2d50

圖2-50 foreach循環控制語句

2.11.5 循環跳出語句

為了避免出現死循環或滿足一些特殊功能的需要,有時需要在滿足給定條件的前提下跳出循環,這時就需要使用循環跳出語句。

p86

【循環跳出語句】

在PHP中,可以使用break和continue兩種循環跳出語句。

1. break

break循環跳出語句的作用是終止循環,即退出循環體,語法格式如下。

break $num;

其中,“$num”為可選參數,用于指定終止循環的層數。

【實例2-51(53_Break_Statement.php)】 使用for循環控制語句輸出10以內的奇數,當循環到5時,終止循環。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $num = 1;  //定義一個整型變量
  echo'10以內的奇數有:';    //顯示結果
  //循環
  for ($num = 1; $num <= 10; $num++)
  {
    //判斷是否等于5
    if ($num== 5)
    {
      break;            //終止循環
    }
    //判斷是否為奇數
    if ($num% 2 == 1)
    {
      echo $num.' ';    //顯示結果
    }
  }
?>

運行結果如圖2-51所示。

2d51

圖2-51 break循環跳出語句

2. continue

continue循環跳出語句的作用是跳過循環,即跳過本次循環,進入下一次循環,語法格式如下。

continue $num;

其中,$num為可選參數,用于指定跳過循環的層數。

【實例2-52(54_Continue_Statement.php)】 使用for循環控制語句輸出10以內的奇數,當循環到5時,跳過本次循環。實例代碼如下。

<?php
  //設置編碼格式,正確顯示中文
  header("content-Type: text/html; charset=gb2312");
  $num = 1;  //定義一個整型變量
  echo'10以內的奇數有:';   //顯示結果
  //循環
  for ($num = 1; $num <= 10; $num++)
  {
    //判斷是否等于5
    if ($num== 5)
    {
      continue;        //跳過循環
    }
    //判斷是否為奇數
    if ($num% 2 == 1)
    {
      echo $num.' ';  //顯示結果
    }
  }
?>

運行結果如圖2-52所示。

2d52

圖2-52 continue循環跳出語句

主站蜘蛛池模板: 九龙县| 乐山市| 仪征市| 钦州市| 曲水县| 花垣县| 左贡县| 漾濞| 宽甸| 绥江县| 丰台区| 哈巴河县| 繁昌县| 华容县| 和平区| 顺昌县| 双流县| 民丰县| 阳山县| 南安市| 镇平县| 华宁县| 南召县| 个旧市| 株洲市| 郁南县| 汨罗市| 南汇区| 常宁市| 六枝特区| 金寨县| 文成县| 江油市| 沿河| 许昌市| 金昌市| 泰安市| 阆中市| 马龙县| 丹凤县| 铁岭县|