导航
×
   ❮   
HTML CSS JavaScript PHP Go ECMS

PHP foreach 循环


foreach 循环 - 遍历数组中的每个元素或对象中的每个属性来执行一段代码。


数组的 foreach 循环

foreach 循环最常见的用法是遍历数组中的项。

实例

遍历索引数组的项

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $x) {
  echo "$x<br>";
}
亲自试一试 »

在每次循环迭代中,当前数组元素的值被赋给变量 $x。循环将一直进行,直到达到最后一个数组元素。


键和值

上面的数组是一个 索引 数组,其中第一个项的键是 0,第二个是 1,依此类推。

关联 数组不同,关联数组使用您分配给它们的命名键,在遍历关联数组时,您可能希望同时保留键和值。

可以通过在 foreach 定义中指定键和值来完成此操作,如下所示:

实例

打印 $members 数组的键和值

$members = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach ($members as $x => $y) {
  echo "$x : $y<br>";
}
亲自试一试 »

您将在 PHP 数组 章中了解更多关于数组的内容。


对象的 foreach 循环

foreach 循环也可以用来遍历对象的属性。

实例

打印 $myCar 对象的属性名和值

class Car {
  public $color;
  public $model;
  public function __construct($color, $model) {
    $this->color = $color;
    $this->model = $model;
  }
}

$myCar = new Car("red", "Volvo");

foreach ($myCar as $x => $y) {
  echo "$x: $y<br>";
}
亲自试一试 »

您将在 PHP 对象和类 章中了解更多关于对象的内容。


break 语句

使用 break 语句,我们可以在循环未结束时停止它。

实例

$x 为 "blue" 时停止循环

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $x) {
  if ($x == "blue") break;
  echo "$x<br>";
}
亲自试一试 »

continue 语句

使用 continue 语句,我们可以停止当前迭代,并继续下一个。

实例

$x 为 "blue" 时,停止并跳转到下一个迭代

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $x) {
  if ($x == "blue") continue;
  echo "$x<br>";
}
亲自试一试 »

Foreach byref (按引用传递)

在遍历数组项时,默认情况下,对数组项所做的任何更改都**不会**影响原始数组。

实例

默认情况下,更改数组项不会影响原始数组。

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $x) {
  if ($x == "blue") $x = "pink";
}

var_dump($colors);
亲自试一试 »

但是,通过在 foreach 声明中使用 & 符号,数组项是按引用分配的,这会导致对数组项所做的任何更改也会影响原始数组。

实例

通过按引用分配数组项,更改将影响原始数组。

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as &$x) {
  if ($x == "blue") $x = "pink";
}

var_dump($colors);
亲自试一试 »

替代语法

foreach 循环的语法也可以这样使用 endforeach 语句:

实例

遍历索引数组的项

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $x) :
  echo "$x<br>";
endforeach;
亲自试一试 »

freew3c.com 中文网是独立运营的中文开发者学习平台,与 freew3c.com 无关联。提供的内容仅用于学习和测试,不保证内容的正确性。


Copyright @2020-2026 京ICP备888888号-8