在php的foreach循环中增加数组元素?

10 浏览
0 Comments

在php的foreach循环中增加数组元素?

这个问题已经在这里有了答案:

PHP的\'foreach\'如何工作?

考虑下面的代码:


它没有显示\'a\'。foreach如何在哈希表(数组)中遍历每个元素。如果实现了列表,为什么不能在运行时添加更多呢?

请不要告诉我可以通过计数来使用基于数字的索引完成该任务。

admin 更改状态以发布 2023年5月22日
0
0 Comments

我认为你需要连续地存储数组元素

尝试一下

$val) {
   print "key=>$key\n";
   if(!isset($arr['a']))
      $arr['a'][] = 'apple';
}
print_r($arr);
?>

0
0 Comments

在循环之前,`foreach` 会复制数组的结构(详情请阅读),因此您不能更改数组的结构并等待循环中出现新元素。您可以使用 `while` 代替 `foreach`。

$arr = array();
$arr['b'] = 'book';
reset($arr);
while ($val = current($arr))
    {
    print "key=".key($arr).PHP_EOL;
    if (!isset($arr['a']))
        $arr['a'] = 'apple';
    next($arr);
    }

或者使用 `ArrayIterator` 结合 `foreach`,因为 `ArrayIterator` 不是一个数组。

$arr = array();
$arr['b'] = 'book';
$array_iterator = new ArrayIterator($arr);
foreach($array_iterator as $key=>$val) {
   print "key=>$key\n";
   if(!isset($array_iterator['a']))
      $array_iterator['a'] = 'apple';
}

0