foreach 提供簡潔方式遍歷陣列與物件(PHP 4/5+)。僅適用於陣列與物件,用於其他型別或未初始化變數會產生錯誤。
foreach (array_expression as $value) {
statement;
}
foreach (array_expression as $key => $value) {
statement;
}
"; } ?>
輸出:
1 2 3 4
$value) {
echo $key . "=====>" . $value . "
";
}
?>
輸出:
0=====>1 1=====>2 2=====>3 3=====>4
$val) {
echo "$key => $val\n";
}
// 僅輸出 public 屬性:name => Tom
?>
foreach 操作的是陣列副本(除非用參考),不會影響內部指標;reset()、next() 等函數不影響 foreach 迴圈。
1, 'b' => 2];
foreach ($arr as $k => $v) {
echo "$k => $v\n";
}
// PHP 7 允許 list() 解構陣列值
$data = [[1, 2], [3, 4]];
foreach ($data as [$a, $b]) {
echo "a=$a, b=$b\n";
}
?>
is_array() 檢查unset($val)foreach 效能優於 for/while,但超大陣列考慮生成器 yield| 場景 | 推薦語法 |
|---|---|
| 只需值 | foreach ($arr as $v) |
| 需鍵名 | foreach ($arr as $k => $v) |
| 需修改原值 | foreach ($arr as &$v) + unset($v) |
| 解構子陣列 | foreach ($arr as [$a, $b]) (PHP 7.1+) |