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("Bill"=>"35", "Steve"=>"37", "Elon"=>"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;