PHP - For 循环



默认情况下,程序遵循语句的顺序执行。如果程序流指向程序中的任何先前语句,则它构成循环。PHP 中的 for 语句是在 PHP 脚本中构成循环的便捷工具。在本章中,我们将讨论 PHP 的 for 语句。

“for” 循环流程图

下面图片说明了 for 循环的工作原理 -

PHP For 循环

当您知道要执行一个语句或语句块的次数时,将使用 for 语句。

for 循环语法

PHP  for 语句语法类似于 C 语言中的 for 语句。


for (expr1; expr2; expr3){
   要执行的代码;
}

关键字 for 后跟一个括号,其中包含三个表达式,用分号分隔。它们中的每一个都可以为空,也可以包含多个表达式,以逗号分隔。括号后跟一个或多个放在大括号内的语句。它构成了循环的主体。

括号中的第一个表达式仅在循环开始时执行。它通常充当 初始化器,用于设置循环迭代次数的计数器的起始值。

在每次迭代开始时,都会评估 expr2。如果计算结果为 true,则循环继续并执行 body 块中的语句。如果计算结果为 false,则循环的执行结束。通常,expr2 指定 counter 的最终值。

expr3 在每次迭代结束时执行。在大多数情况下,此表达式会增加 counter 变量。

示例

for 循环的最常见示例如下 -


<?php
   for ($i=1; $i<=10; $i++){
      echo "迭代编号: $i \n";
   }
?>

这是它的输出 -

迭代编号:1
迭代编号:2
迭代编号:3
迭代编号:4
迭代编号:5
迭代编号: 6
迭代编号:7
迭代编号:8
迭代编号:9
迭代编号:10

无限 for 循环

请注意,括号中的所有三个表达式都是可选的。只有两个分号的 for 语句构成无限循环。


for (; ;) {
   循环体
}

要停止无限迭代,您需要在循环体中使用 break 语句。

递减的 for 循环

您还可以形成递减 for 循环。要有一个从 10 到 1 的 for 循环,请用 10 初始化循环变量,在每次迭代开始时计算的中间表达式会检查它是否大于 1。在每次迭代结束时执行的最后一个表达式应将其递减 1。


<?php
   for ($i=10; $i>=1; $i--){
      echo "迭代编号:$i \n";
   }
?>

它将产生以下输出 -

迭代编号:10 
迭代编号:9 
迭代编号:8 
迭代编号:7 
迭代编号: 6 
迭代编号:5 
迭代编号:4 
迭代编号:3 
迭代编号:2 
迭代编号:1

使用 for...endfor 结构

您还可以使用 “:”(冒号)符号启动循环块,并在块的末尾放置 endfor 语句。


<?php
   for ($i=1; $i<=10; $i++):
      echo "迭代编号: $i \n";
   endfor;
?>

使用 for 循环迭代索引数组

数组中的每个元素都由以 “0” 开头的递增索引标识。如果存在包含 5 个元素的数组,则其下限为 0,上限为 4(数组大小 -1)。

要获取数组中的元素数,有一个 count() 函数。因此,我们可以使用以下 for 语句迭代索引数组 -


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

   for ($i=0; $i<count($numbers); $i++){
      echo "numbers[$i] = $numbers[$i] \n";
   }
?>

它将产生以下输出 -

numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50

使用 for 循环迭代关联数组

PHP 中的关联数组是键值对的集合。箭头符号 (=>) 用于显示键与其值之间的关联。我们使用 array_keys() 函数来获取 key 数组。

下面的 for 循环从代码中定义的关联数组 $capitals 打印每个州的首都 -


<?php
    $capitals = array(
        "中国"=>"北京",
        "日本"=>"东京",
        "韩国"=>"汉城",
        "美国"=>"华盛顿"
    );
    $keys=array_keys($capitals);
    for ($i=0; $i<count($keys); $i++){
        $cap = $keys[$i];
        echo "$cap 的首都是 $capitals[$cap] \n";
    }
?>

这是它的输出 -

中国 的首都是 北京 
日本 的首都是 东京 
韩国 的首都是 汉城 
美国 的首都是 华盛顿 

PHP 使用嵌套 for 循环

如果在现有循环的主体内使用了另一个 for 循环,则称这两个循环已嵌套。

对于外循环的 counter 变量的每个值,内循环的所有迭代都完成。


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

它将产生以下输出 -

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

请注意,字符串是数组的一种形式。strlen() 函数给出字符串中的字符数。

示例

下面的 PHP 脚本使用两个嵌套循环来打印每行中字符串的递增字符数。


<?php
   $str = "www.qikepu.com";
   for ($i=0; $i<strlen($str); $i++){
      for ($j=0; $j<=$i; $j++){
         echo "$str[$j]";
      }
      echo "\n";
   }
?>

它将产生以下输出 -

w
ww
www
www.
www.q
www.qi
www.qik
www.qike
www.qikep
www.qikepu
www.qikepu.
www.qikepu.c
www.qikepu.co
www.qikepu.com