PHP - While 循环



PHP 创建循环的最简单方法是使用 while 结构。PHP  while 循环的语法类似于 C 语言中的语法。只要 while 语句中的布尔表达式为 true,就会重复执行循环体块。

下图有助于理解 PHP 中的 while 循环是如何工作的 -

PHP While 循环

每次在循环开始时都会检查表达式的值。如果 while 表达式从一开始就计算为 false,则循环甚至不会运行一次。即使在块执行期间表达式变为 false,执行也不会停止,直到迭代结束。

while 循环的语法可以表示如下 -


while (expr){
   声明
}

示例

下面的代码显示了 while 循环在 PHP 中如何工作的简单示例。在循环开始之前,变量 $x 初始化为 1。只要循环体小于或等于 10,就会要求执行循环体。循环体中的 echo 语句打印当前迭代编号,并增加 x 的值,以便条件最终变为 false。


<?php
   $x = 1;
   while ($x<=10) {
      echo "第 $x 次迭代\n";
      $x++;
   }
?>

它将产生以下输出 -

第 1 次迭代
第 2 次迭代
第 3 次迭代
第 4 次迭代
第 5 次迭代
第 6 次迭代
第 7 次迭代
第 8 次迭代
第 9 次迭代
第 10 次迭代

请注意,在每次迭代开始时都会检查测试条件。即使条件在循环中变为 false,执行也不会停止,直到迭代结束。

示例

在以下示例中,“x” 在每次迭代中递增 3。在第三次迭代中,“x” 变为 9。由于测试条件仍然为 true,因此将进行下一轮,其中 “x” 变为 12。当条件变为 false 时,循环将停止。


<?php
   $x = 0;
   while ($x<=10){
      $x+=3;
      echo "第 $x 次迭代。\n";            
   }
?>

它将产生以下输出 -

第 3 次迭代。
第 6 次迭代。
第 9 次迭代。
第 12 次迭代。

 

示例

并不总是需要让循环变量递增。如果循环变量的初始值大于循环应该结束的值,则递减它。


<?php
   $x = 5;
   while ($x>0) {
      echo "第 $x 次迭代\n";
      $x--;
   }
?>

它将产生以下输出 -

第 5 次迭代
第 4 次迭代
第 3 次迭代
第 2 次迭代
第 1 次迭代

while 迭代数组

PHP 中的索引数组是元素的集合,每个元素都由从 0 开始的递增索引标识。

您可以通过构成 while 循环来遍历数组,方法是重复访问第 x 个索引处的元素,直到 “x” 达到数组的长度。此处,“x” 是一个计数器变量,每次迭代都会递增。我们还需要一个 count() 函数来返回数组的大小。

示例

请看下面的例子 -


<?php
   $numbers = array(10, 20, 30, 40, 50);
   $size = count($numbers);
   $x=0;

   while ($x<$size) {
      echo "索引 $x 的数字为 $numbers[$x] \n";
      $x++;
   }
?>

将产生以下输出 -

索引 0 的数字为 10 
索引 1 的数字为 20 
索引 2 的数字为 30 
索引 3 的数字为 40 
索引 4 的数字为 50 

嵌套 while 循环

您可以在另一个 while 循环包含 while 循环。外部和内部 while 循环都由两个单独的变量控制,每次迭代后递增。


<?php
   $i=1;
   $j=1;

   while ($i<=3){
      while ($j<=3){
         echo "i= $i j= $j \n";
         $j++;
      }
      $j=1;
      $i++;
   }
?>

将产生以下输出 -

i= 1 j= 1
i= 1 j= 2
i= 1 j= 3
i= 2 j= 1
i= 2 j= 2
i= 2 j= 3
i= 3 j= 1
i= 3 j= 2
i= 3 j= 3

请注意,作为内部 while 循环的计数器变量 “j” 在获取所有值后被重新初始化为 1,因此对于 “i” 的下一个值,“j” 再次从 1 开始。

遍历字符串的字符

在 PHP 中,字符串可以被视为字符的索引集合。因此,具有从 “0” 到字符串长度的 counter 变量的 while 循环可用于一次获取一个字符。

示例

以下示例计算给定字符串中的元音数。我们使用 strlen() 来获取长度,使用 str_contains() 来检查字符是否是元音之一。


<?php
   $line = "PHP is a popular general-purpose scripting language that is especially suited to web development.";
   $vowels="aeiou";
   $size = strlen($line);
   $i=0;
   $count=0;

   while ($i<$size){
      if (str_contains($vowels, $line[$i])) {
         $count++;
      }
      $i++;
   }
   echo "Number of vowels = $count";
?>

它将产生以下输出 -

Number of vowels = 32

使用 endwhile 语句

PHP 还允许你对 while 循环使用另一种语法。循环体不是将多个语句合并到大括号中,而是在条件后面用 “:”(冒号)符号标记,并在末尾用 endwhile 语句标记。


<?php
   $x = 1;
   while ($x<=10):
      echo "第 $x 次迭代\n";
      $x++;
   endwhile;
?>

它将产生以下输出 -

第 1 次迭代
第 2 次迭代
第 3 次迭代
第 4 次迭代
第 5 次迭代
第 6 次迭代
第 7 次迭代
第 8 次迭代
第 9 次迭代
第 10 次迭代

请注意,endwhile 语句以分号结尾。