php foreach实现
foreach 的基本语法
PHP 的 foreach 用于遍历数组或对象。语法分为两种形式:
-
遍历值
foreach ($array as $value) { // 操作 $value } -
遍历键和值
foreach ($array as $key => $value) { // 操作 $key 和 $value }
遍历索引数组
直接获取数组元素的值:
$colors = ["red", "green", "blue"];
foreach ($colors as $color) {
echo $color . "\n";
}
输出:
red
green
blue
遍历关联数组
获取键和对应的值:
$user = ["name" => "Alice", "age" => 25];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
输出:
name: Alice
age: 25
遍历多维数组
嵌套 foreach 处理多维数据:
$users = [
["id" => 1, "name" => "Tom"],
["id" => 2, "name" => "Jerry"]
];
foreach ($users as $user) {
foreach ($user as $key => $value) {
echo "$key=$value ";
}
echo "\n";
}
输出:
id=1 name=Tom
id=2 name=Jerry
修改数组值
通过引用 (&) 直接修改原数组:
$numbers = [1, 2, 3];
foreach ($numbers as &$num) {
$num *= 2;
}
print_r($numbers); // 输出 [2, 4, 6]
遍历对象
实现 Iterator 接口的对象可直接遍历:
class MyClass implements Iterator {
private $data = ["a", "b", "c"];
public function current() { return current($this->data); }
public function key() { return key($this->data); }
public function next() { next($this->data); }
public function rewind() { reset($this->data); }
public function valid() { return key($this->data) !== null; }
}
$obj = new MyClass();
foreach ($obj as $key => $value) {
echo "$key: $value\n";
}
注意事项
- 遍历后需取消引用避免意外修改:
unset($num); // 清除 $numbers 遍历时的引用 - 性能上
foreach比for更高效,尤其处理关联数组。







