php foreach实现
使用 foreach 遍历数组
在 PHP 中,foreach 是遍历数组或对象的常用方法。它能够自动迭代数组中的每个元素,无需手动管理索引或指针。
$array = [1, 2, 3, 4, 5];
foreach ($array as $value) {
echo $value . "\n";
}
获取键和值
如果需要同时获取数组的键和值,可以通过以下方式实现:

$assocArray = ['a' => 1, 'b' => 2, 'c' => 3];
foreach ($assocArray as $key => $value) {
echo "Key: $key, Value: $value\n";
}
遍历多维数组
foreach 同样适用于多维数组的遍历:

$multiArray = [
['name' => 'Alice', 'age' => 25],
['name' => 'Bob', 'age' => 30]
];
foreach ($multiArray as $person) {
echo "Name: " . $person['name'] . ", Age: " . $person['age'] . "\n";
}
引用方式修改数组
在遍历过程中,如果需要直接修改原数组元素,可以使用引用传递:
$numbers = [1, 2, 3];
foreach ($numbers as &$num) {
$num *= 2;
}
unset($num); // 断开引用
print_r($numbers);
遍历对象
foreach 也可以遍历实现了 Traversable 接口的对象:
class MyIterator implements Iterator {
private $position = 0;
private $data = ['first', 'second', 'third'];
public function current() { return $this->data[$this->position]; }
public function key() { return $this->position; }
public function next() { ++$this->position; }
public function rewind() { $this->position = 0; }
public function valid() { return isset($this->data[$this->position]); }
}
$obj = new MyIterator();
foreach ($obj as $key => $value) {
echo "$key: $value\n";
}
性能注意事项
在处理大型数组时,foreach 通常比 for 循环更高效。它直接操作数组内部指针,避免了不必要的索引计算。但需要注意引用传递可能导致意外的副作用,应在使用后及时 unset 引用变量。






