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;
自己动手试一试 »