PHP foreach 循环
1. PHP foreach 循环遍历索引数组
PHP foreach 循环专门用于遍历数组中的每个元素或对象中的每个属性,并为其执行一段指定的代码块。
以下示例展示了如何遍历索引数组(Indexed Arrays)中的所有项目:
示例
遍历索引数组的各个元素:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $value) {
echo "$value <br>";
}解释: 在每一次的循环迭代中,当前数组元素的值都会被赋给变量 $value。循环会一直持续进行,直至到达数组的最后一个元素。
2. PHP foreach 循环遍历关联数组
上面例子中的数组是一个索引数组,其中第一项的键(key)为 0,第二项的键为 1,依此类推。
关联数组(Associative Arrays)则有所不同。关联数组使用的是开发者自定义的命名键,当您遍历它们时,通常会希望同时获取键名和其对应的值。
这可以通过在 foreach 循环的声明中同时指定键和值来实现,如下所示:
示例
从 $members 数组中同时打印出键(key)和值(value):
$members = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach ($members as $key => $value) {
echo "$key : $value <br>";
}您将在后续的 PHP 数组章节中学习到更多关于数组的知识。
3. PHP foreach 循环遍历对象
foreach 循环同样可以用于遍历对象(Objects)的各个公共属性:
示例
打印出 $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 对象与类章节中了解更多相关内容。
4. PHP break 语句
利用 break 语句,即使 foreach 循环还未遍历完所有元素,我们也可以强行中断并跳出循环:
示例
如果 $x 的值为 "blue",则停止循环:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") break;
echo "$x <br>";
}5. PHP continue 语句
使用 continue 语句,我们可以直接跳过当前轮次的迭代,并继续执行下一次迭代:
示例
如果 $x 的值为 "blue",则跳过本次打印并直接进入下一次迭代:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") continue;
echo "$x <br>";
}6. PHP foreach 循环与引用传递 (Byref)
在遍历数组元素时,默认情况下,对循环内部数组元素所做的任何更改都不会影响到原始数组:
示例
默认情况下,更改元素的值不会影响原数组:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);但是,通过在 foreach 的变量声明中使用 & 字符,数组元素将被按引用传递(assigned by reference)。这意味着对该数组元素所做的任何更改,都会直接同步修改原始数组中的数据:
示例
通过按引用传递数组元素,修改操作将直接影响原数组:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as &$x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);7. 替代语法 (Alternative Syntax)
foreach 循环的语法也可以通过使用 endforeach 语句来进行替代编写,效果是完全一样的:
示例
使用替代语法遍历索引数组中的元素:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) :
echo "$x <br>";
endforeach;