首页 > 解决方案 > 匹配值后PHP数组替换

问题描述

我有一个如下所示的基本数组

$orgigal = [
          0 => [
            'month' => '02',
            'total_sum_coin' => 0,
          ],
          1 => [
            'month' => '03',
            'total_sum_coin' => 0,
          ],
          2 => [
            'month' => '04',
            'total_sum_coin' => 0,
          ],
    ]

还有另一个替换数组,如下所示

$replace = [
        0 => [
               'month' => '03',
               'total_sum_coin' => 10,
        ],
        1 => [
                'month' => '04',
                'total_sum_coin' => 20,
        ],
    
    ]

使用后替换功能

array_replace($orgigal,$replace)

它正在用键替换,我试图在匹配几个月后用值替换它。

我的愿望输出

$orgigal = [
          0 => [
            'month' => '02',
            'total_sum_coin' => 0,
          ],
          1 => [
            'month' => '03',
            'total_sum_coin' => 10,
          ],
          2 => [
            'month' => '04',
            'total_sum_coin' => 20,
          ],
    ]

标签: phparrays

解决方案


要替换month它必须是唯一的,所以只需索引并替换:

$orgigal = array_replace(array_column($orgigal, null, 'month'),
                         array_column($replace, null, 'month'));

或者:

$orgigal = array_column($replace,  null, 'month') + array_column($orgigal, null, 'month');

如果您不想要monthas 之后的键,那么只需使用array_values.


推荐阅读