【问题标题】:array_merge is not replacing the matching $keyarray_merge 没有替换匹配的 $key
【发布时间】:2019-08-28 15:45:43
【问题描述】:

我正在尝试合并两个数组,这原本可以工作,但现在我正在尝试合并多维数组。

第一个数组:

$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_replace

标签: php arrays merge array-merge


【解决方案1】:

对于数字索引,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
                (
                )

        )

)

【讨论】:

  • 在我问这个问题之前尝试过,但是有 $a + $b 并且它不起作用。感谢您澄清这一点!
猜你喜欢
  • 2011-06-02
  • 2013-01-17
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2022-01-17
  • 2019-07-12
  • 2016-11-04
  • 2021-06-17
相关资源
最近更新 更多