foreach()只能用于遍历数组或对象,当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,不需要在 foreach 循环之前调用 reset()。
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。foreach 不支持用“@”来抑制错误信息的能力。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>
HP 5.5 增添了list()遍历一个数组的数组并且把嵌套的数组解包到循环变量中
list() 中的单元可以少于嵌套数组的,此时多出来的数组单元将被忽略;如果 list() 中列出的单元多于嵌套数组则会发出一条消息级别的错误信息:
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a)) {
echo "$a\n";
}
/*
1
3
*/
foreach ($array as list($a,$b)) {
echo "$a == $b\n";
}
/*
1 == 2
3 == 4
*/
?>