php - 如何合并具有不同键数的两个数组的第二级值?

标签 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
               )
    )

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

我想合并两个数组,这样最后我在第一层有相同的结构、键数,但值会在第二层“连接”,就像我们在下面的结果中看到的那样数组:

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

我尝试使用 array_merge 和 array_merge_recursive,如以下解决方案所示:https://stackoverflow.com/a/16541831/3499881 , 但它没有用。

  • 我是否真的必须将所有数字键都转换为字符串,或者是否也可以使用这些键?如果这是唯一的方法,请告诉我如何转换它好吗?

  • 或者问题是因为第一个数组中有 2 个键而第二个数组中有 4 个?

如果有任何线索,我将不胜感激。非常感谢。

最佳答案

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

$result = array_map('array_merge', $array1, $array2);

检查 fiddle .

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

If the input arrays have the same string keys, then the values for these keys are merged together into an array, and this is done recursively, so that if one of the values is an array itself, the function will merge it with a corresponding entry in another array too. If, however, the arrays have the same numeric key, the later value will not overwrite the original value, but will be appended.

关于php - 如何合并具有不同键数的两个数组的第二级值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556922/

相关文章:

php - NodeJS 从 PHP 服务器接收数据

php - 加载大量包会影响 Symfony2 应用程序的整体性能吗?

python - 修改pygame的数组以进行blit

javascript - 将文本与数组项连接时覆盖文本

c - 使用对 malloc 的单次调用为 C 89/90 中未知数据类型的二维数组动态分配连续的内存块

php - 我的 Laravel 5.2.10 session 不会持续

PHP 选择查询

arrays - Ajax DATA 更​​改排序

php - 从 HTML 中提取图像的正则表达式 - 如何只获取 JPG?

c - 如何使用动态分配代替静态int?