为什么我无法在关联数组中添加新的键值对?

时间:2014-08-17 17:25:33

标签: php arrays multidimensional-array associative-array key-value

我有一个名为$data的大型关联数组。为了您的理解,我在其下面打印一个元素。

Array
(
    [0] => Array
        (

            [id] => 92
            [zip_code] => 07080
            [phone_no] => 7327630062
            [amount] => 
            [currency] => $
            [product_details] => Array
                (
                )

        )
    [1] => Array
        (

            [id] => 93
            [zip_code] => 07081
            [phone_no] => 7327630063
            [amount] => 20
            [currency] => $
            [product_details] => Array
                (
                )

        )
)

现在我想在标题为$data的上述关联数组的每个元素中创建一个新的键值对。为此,我写了以下逻辑,但它没有创建一个新的键值对。有人可以在这方面帮助我吗?

foreach($data as $key => $value) {
        if(!empty($value['amount'])) { 
          $value['final_amount'] = $value['amount'] - 2;
        } else 
          $value['final_amount'] = '';        
      }

2 个答案:

答案 0 :(得分:3)

来自manual of foreach

  

为了能够直接修改循环内的数组元素   使用&前面的$ value。在这种情况下,值将由   参考

foreach($data as $key => &$value)

答案 1 :(得分:2)

foreach循环中,通过在变量名前添加&符$value来引用&

foreach($data as $key => &$value)

这将允许循环修改原始$data,而不是修改它的副本。