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


Why I'm not able to add new key value pair in an associative array?

我有一个标题为$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'] = '';        
      }

来自foreach的手册:

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

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

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

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

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