array_merge 没有替换匹配的 $key

array_merge is not replacing the matching $key

我正在尝试合并两个数组,这本来是可行的,但现在我正在尝试合并多维数组。

第一个数组:

$old_array = 
Array (
    [2] => Array (
        [a] => Location 2
        [b] => loc02
        [c] => Array (  )
    )

    [3] => Array (
        [a] => Location 3
        [b] => loc04
        [c] => Array ( [reader] => reader )
    )
)

第二个数组:

$new_array = 
Array (
    [3] => Array (
        [a] => Location 3 New
        [b] => loc06
        [c] => Array ( [publisher] => publisher )
    )
)

当我 运行 然后通过 array_merge( $old_array, $new_array ) 时,第二个数组只是添加到底部而不是替换同一行。

这在以前是有效的,唯一的变化是添加了 [c] 的数组,不确定合并是否导致添加而不是替换。

对于数字索引,array_merge 只会将新项目附加到第一个数组的末尾。这适用于字符串索引,因为值会被覆盖。如果要将它们合并为数字索引,请使用“+”运算符。

查看此评论:https://www.php.net/manual/en/function.array-merge.php#92602

忘记添加了,如果你有 2 个数组,$a$b 并且你想用 $b 的值覆盖 $a 的值,那么, $new_array = $b + $a; 因此,上面的数组将导致:

Array
(
    [3] => Array
        (
            [a] => Location 3 new
            [b] => loc06
            [c] => Array
                (
                    [publisher] => publisher
                )

        )

    [2] => Array
        (
            [a] => Location 2
            [b] => loc02
            [c] => Array
                (
                )

        )

)