logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

PHP课程 - 第12课 - 循环语句 while、foreach、for

09/10/2025, by Ivan

在编程中,乃至在生活中,我们经常会遇到需要重复执行某些操作直到获得满意结果的情况。在生活里我们可能称之为“折磨”,而在编程中它被称为循环(loop)。循环在 PHP 中非常常见,它是遍历数组、计算函数以及执行各种重复任务的便利方式。我们先从最简单、最常用的 while 循环开始学习。

PHP while 循环

while 循环非常简单。括号中写条件,花括号中写当条件成立时要执行的代码。条件是一个逻辑表达式,它的结果要么是 TRUE,要么是 FALSE。如果你还不熟悉逻辑表达式,可以回顾一下关于 if 运算符的课程。下面是一个简单的 while 示例:

<?php
$counter = 5;
$newArray = array();
while($counter > 2){
  $newArray[]= $counter;
  $counter--;
}
print_r($newArray);
?>

执行结果为数组中的元素:5, 4, 3。让我们分步看看是怎么发生的:

第1步:$counter = 5 (5 > 2)

第2步:$counter = 4 (4 > 2)

第3步:$counter = 3 (3 > 2)

第4步:$counter = 2 (2 = 2,条件不再成立,因此循环结束,数组中没有 2)

再来看一个例子,对函数 y(x) = 2x - 1 进行制表计算:

<?php
// 函数 y(x) = 2x -1;
$x = -10;
while($x <= 10){
  $y = 2*$x-1;
  print 'y(' . $x . ')=' . $y . '<br />';
  $x++;
}
?>

结果会按列显示函数在 x ∈ [-10,10] 时的取值。

For PHP

上图是 while 循环的流程图。可以看到它的工作原理:当条件为真时,循环体中的代码执行;当条件为假时,循环结束,程序继续执行后续代码。

一个非常重要的提醒: 如果你删除了 $x++ 这一行,使得计数器不再变化,那么条件将永远为真。那会发生什么呢?

<?php
// 函数 y(x) = 2x -1;
$x = -10;
while($x <= 10){
  $y = 2*$x-1;
  print 'y(' . $x . ')=' . $y . '<br />';
  // $x++;
}
?>

这时程序会出现严重问题 —— 循环将永远执行下去,这种情况称为死循环(infinite loop)。一定要避免死循环,否则会导致网站崩溃或服务器卡死!

PHP foreach 循环

foreach 是另一个非常重要的循环结构,它通常用于遍历数组。所谓“遍历”,就是依次取出数组的每一个元素,对其执行相同的操作,直到处理完所有元素。

来看一个例子:假设我们有 10 个元素,分别为“红色”和“蓝色”,我们要统计其中红色元素的数量:

<?php
$counter = 0;
$newArray =array(
  1=>'红色',
  2=>'蓝色',
  3=>'蓝色',
  4=>'红色',
  5=>'红色',
  6=>'蓝色',
  7=>'红色',
  8=>'蓝色',
  9=>'红色',
  10=>'蓝色',
);
foreach($newArray as $key){
  if($key == '红色'){
    $counter++;
  }
}
print '我们共有 ' . $counter . ' 个红色元素';
?>

这个例子非常直观。关键字 as 用于依次取出数组中的每个元素。当所有元素都处理完时,循环就结束。

但数组有时并不那么简单,可能包含多个嵌套的子数组。这种情况下我们可以使用嵌套的 foreach

<?php
$counter = 0;
$newArray = array(
  1=>array(
    1 => '红色',
    2 => '蓝色',
    3 => '蓝色',
  ),
  2=>array(
    1 => '红色',
    2 => '红色',
    3 => '蓝色',
  ) 
);
foreach($newArray as $key){
  foreach($key as $element){
    if($element == '红色'){
      $counter++;
    }
  }
}
print '我们共有 ' . $counter . ' 个红色元素';
?>

通过这种方式,我们可以轻松统计嵌套数组中的数据。关于 foreach 我们暂时学到这里,之后的课程中还会多次用到。

PHP for 循环

for 循环与 while 循环类似,但通常用于已知循环次数的情况,例如循环 10 次或 100 次。

for($i=0;$i<10;$i++){
  // 执行 10 次
}

我们来逐步解析 for 循环的结构:

for(){

}

与其他循环一样,参数写在括号内,通常有三个部分:

  1. $i = 0 —— 初始化计数器变量,记录当前循环次数。
  2. $i < 10 —— 循环执行的条件。
  3. $i++ —— 每次循环后计数器加 1,用于控制循环次数。

通过这种方式,我们可以方便地执行固定次数的循环,非常适用于计数、生成序列、批量输出等场景。