PHP foreach 循环
The 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;
自己尝试 »