php - 在循环期间访问关联数组中新添加的 key=>value

标签 php arrays associative-array

我试图在使用 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/

相关文章:

php - 在电子邮件中获取 WooCommerce 订单日期时间

php - 从字符串调用 php 函数(带参数)

php - 使用 MySQLi 和 PHP 未将数据提交到 SQL 数据库

JavaScript 从多维数组中删除单个数据项

javascript - 如何在 Javascript 中将索引关联数组转换为逗号分隔关联数组

javascript - 从 JSON 到关联数组到 html 表

PHP 数组 : integer index vs string index

php - 在phpexcel中将文本转换为数字格式

javascript - 比较对象数组

c - 试图用指针来理解这句话