我试图在使用 foreach 循环时将键=>值对添加到数组,当添加该值时,foreach 循环需要处理新的键=>值对。
$array = array(
'one' => 1,
'two' => 2,
'three' => 3
);
foreach($array as $key => $value) {
if ($key == 'three') {
$array['four'] = 4;
} else if ($key == 'four') {
$array['five'] = 5;
}
}
如果我在循环后打印数组,我希望看到所有 5 kv,但我只看到这个:
Array
(
[one] => 1
[two] => 2
[three] => 3
[four] => 4
)
当我添加第四对时,有什么方法可以实际处理它,以便将第五对添加到该 foreach 循环(或另一种循环?)中
最佳答案
根据 php 文档,
As foreach relies on the internal array pointer changing it within the loop may lead to unexpected behavior.
您不能在foreach 期间修改数组。然而,用户发布了一个常规 while 循环的示例,它可以满足您的需要:http://www.php.net/manual/en/control-structures.foreach.php#99909
我在这里举报
<?php
$values = array(1 => 'a', 2 => 'b', 3 => 'c');
while (list($key, $value) = each($values)) {
echo "$key => $value \r\n";
if ($key == 3) {
$values[4] = 'd';
}
if ($key == 4) {
$values[5] = 'e';
}
}
?>
上面的代码会输出:
1 => 一个
2 => b
3 => c
4 => d
5 => e
关于php - 在循环期间访问关联数组中新添加的 key=>value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466903/