PHP中foreach用于遍历数组和对象,语法支持只取值或同时取键值,可操作索引与关联数组,通过引用可修改原数组,但需注意作用域和变量初始化问题。

在PHP中,foreach 是一种专门用于遍历数组和对象的控制结构。它比传统的 for 循环更简洁,尤其适合处理索引数组和关联数组,无需手动管理键名或计数器。
基本语法
foreach 有两种主要写法:
-
只获取值:
foreach ($array as $value) { ... } -
同时获取键和值:
foreach ($array as $key => $value) { ... }
其中,$array 是要遍历的数组,$key 是当前元素的键(索引),$value 是对应的值。
遍历索引数组
对于普通的数字索引数组,可以只取值:
立即学习“PHP免费学习笔记(深入)”;
$fruits = ['apple', 'banana', 'orange'];
foreach ($fruits as $fruit) {
echo $fruit . "
";
}
// 输出:apple, banana, orange
遍历关联数组
关联数组使用字符串作为键,通常需要同时获取键和值:
$user = [
'name' => 'Alice',
'age' => 25,
'city' => 'Beijing'
];
foreach ($user as $key => $value) {
echo "$key: $value
";
}
// 输出:name: Alice, age: 25, city: Beijing
通过引用修改原数组
如果想在循环中修改原数组的值,可以在 $value 前加 & 符号,表示引用:
$numbers = [1, 2, 3, 4];
foreach ($numbers as &$num) {
$num *= 2;
}
print_r($numbers);
// 输出:[2, 4, 6, 8]
注意:使用引用后,如果后续还要用 foreach 遍历同一个变量,建议 unset($num),避免意外行为。
常见注意事项
- foreach 遍历的是数组的副本(除非使用引用),修改 $value 不会影响原数组。
- 不能用于遍历未初始化或 null 的变量。
- 对象也可以用 foreach 遍历,但只能访问公共属性。











