我试图找出合并两个数组的方法,这些方法本来可以正常工作,但是现在我试图合并多维数组。
第一个数组:
$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]
的数组,并且不确定合并是否导致添加而不是替换。
答案 0 :(得分:3)
对于数字索引,array_merge会将新项追加到第一个数组的末尾。这对于字符串索引非常有效,因为值会被覆盖。如果要合并它们以获取数字索引,请使用“ +”运算符。
查看此评论:https://www.php.net/manual/en/function.array-merge.php#92602
如果您有$a
和$b
两个数组,并且想用$a
的值覆盖$b
的值,则忘记添加,然后,
$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
(
)
)
)