关联数组的合并部分(分支)

时间:2019-06-03 09:59:59

标签: php arrays

我似乎一见钟情: 我有一个嵌套的assoc数组,即

"stock" => [
    123 => [
            3 => 17,
            5 => 5,
            7 => 0
        ],
    456 => [
            3 => 1,
            5 => 3,
            7 => 7
        ]
]

这些代表仓库(3、5和7)中的物料库存(123和456)。 现在,我想为一个项目更新一个仓库中的库存,即

"stock" => [
    123 => [
            3 => 11
        ]
]

我试图通过array_merge(重新为数组设置键)和array_merge_recursive(奇怪的是,它应该这样做-是数字键吗?)来解决这个问题,但是没有用。我也发现了这个有趣的地方https://vancelucas.com/blog/php-array_merge-preserving-numeric-keys/,但是它取代了阵列的整个分支(所以我失去了仓库5和7)。

有人对此有一些聪明的主意吗?

3 个答案:

答案 0 :(得分:2)

这应该足够了:

$newArray = array_replace_recursive($sourceArray, $newDataArray);

在这里https://3v4l.org/qdejB

答案 1 :(得分:1)

这是您的摘录,

foreach ($temp['stock'] as $key => &$value) {
    foreach ($value as $key1 => $value1) {
        // no need to check, it will add at respective key matching
        $arr['stock'][$key][$key1] = $value1;    
    }
}

working demo

答案 2 :(得分:0)

如果我错了,请纠正我,但是似乎没有什么可以阻止您:

$foo['stock'][123][3] = 11;