我有以下数组:
$array1 = "
Array (
[0] => Array (
[0] => Value1
[1] => Value2
)
[1] => Array (
[0] => Value3
[1] => Value4
)
[2] => Array (
[0] => Value5
[1] => Value6
)
...
[999] => Array (
[0] => Value7
[1] => Value8
)
)
Run Code Online (Sandbox Code Playgroud)
和
$array2 = "
Array (
[0] => Array (
[0] => ValA
[1] => ValB
[2] => ValC
[3] => ValD
)
[1] => Array (
[0] => ValE
[1] => ValF
[2] => ValG
[3] => ValH
)
[2] => Array (
[0] => ValI
[1] => ValJ
[2] => ValK
[3] => ValL
)
...
[999] => Array (
[0] => ValM
[1] => ValN
[2] => ValO
[3] => ValP
)
)
Run Code Online (Sandbox Code Playgroud)
我想合并两个数组,以便最终我有相同的结构,第一级的键数,但值将在第二级"加入",就像我们在下面的结果数组中看到的那样:
$array3 = "
Array (
[0] => Array (
[0] => Value1
[1] => Value2
[2] => ValA
[3] => ValB
[4] => ValC
[5] => ValD
)
[1] => Array (
[0] => Value3
[1] => Value4
[2] => ValE
[3] => ValF
[4] => ValG
[5] => ValH
)
[2] => Array (
[0] => Value5
[1] => Value6
[2] => ValI
[3] => ValJ
[4] => ValK
[5] => ValL
)
...
[999] => Array (
[0] => Value7
[1] => Value8
[2] => ValM
[3] => ValN
[4] => ValO
[5] => ValP
)
)
Run Code Online (Sandbox Code Playgroud)
我尝试使用array_merge和array_merge_recursive,如此解决方案中所示:https://stackoverflow.com/a/16541831/3499881,但它无法正常工作.
我真的必须将所有数字键转换为字符串,还是以某种方式也可以使用该键?如果这是唯一的方法,请你告诉我如何转换它?
或者引起的问题是因为在第一个数组中有2个键而在第二个4中?
我很感激任何线索.提前谢谢了.
有一种“优雅”的方法可以解决您的问题(但是,它要求您的两个数组必须具有相同的项目数):
$result = array_map('array_merge', $array1, $array2);
Run Code Online (Sandbox Code Playgroud)
检查小提琴。
回答你的问题:array_merge_recursive()将会失败,因为它附加数字键,而不是合并它们:
如果输入数组具有相同的字符串键,则这些键的值将合并到一个数组中,并且这是递归完成的,因此,如果其中一个值本身就是数组,则该函数会将其与相应的条目合并也在另一个数组中。但是,如果数组具有相同的数字键,则后面的值不会覆盖原始值,而是会追加。