如何将两个数组的第二级数值与不同数量的键合并?

Alo*_*uil 7 php arrays

我有以下数组:

$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中?

我很感激任何线索.提前谢谢了.

Alm*_* Do 4

有一种“优雅”的方法可以解决您的问题(但是,它要求您的两个数组必须具有相同的项目数):

$result = array_map('array_merge', $array1, $array2);
Run Code Online (Sandbox Code Playgroud)

检查小提琴

回答你的问题:array_merge_recursive()将会失败,因为它附加数字键,而不是合并它们:

如果输入数组具有相同的字符串键,则这些键的值将合并到一个数组中,并且这是递归完成的,因此,如果其中一个值本身就是数组,则该函数会将其与相应的条目合并也在另一个数组中。但是,如果数组具有相同的数字键,则后面的值不会覆盖原始值,而是会追加。