Php 将数组与现有数组合并

Php 将数组与现有数组合并,php,arrays,array-merge,Php,Arrays,Array Merge,我有两个数组,都包含数据。我希望能够将它们添加到一起,以便来自第二个数组的信息连接到第一个数组中。目前,我正在进行的数组合并将第二个数组添加到第一个数组的末尾 阵列1 [1] => Array ( [0] => 2017-07-13 00:00:00 [1] => Foo [2] => Bar [3] => 16.11 [4] =&

我有两个数组,都包含数据。我希望能够将它们添加到一起,以便来自第二个数组的信息连接到第一个数组中。目前,我正在进行的数组合并将第二个数组添加到第一个数组的末尾

阵列1

[1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
        )
[2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
        )
阵列2

[1] => Array
        (
            [0] => TIME
            [1] => Lorem
            [2] => Ipsum
        )

[2] => Array
        (
            [0] => TIME
            [1] => Some
            [2] => Text

        )
如何合并两个数组,使输出如下所示

阵列3

[1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
            [6] => TIME
            [7] => Lorem
            [8] => Ipsum
        )
[2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
            [6] => TIME
            [7] => Some
            [8] => Text
        )
当前正在发生的事情

[1] => Array
        (
            [0] => 2017-07-14 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
        )

    [2] => Array
        (
            [0] => 2017-07-14 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
        )

    [3] => Array
        (
            [0] => TIME
            [1] => Lorem
            [2] => Ipsum
        )

    [4] => Array
        (
            [0] => TIME
            [1] => Some
            [2] => Text
        )
我尝试了
array\u merge($array1,$array2)
但这会将第二个数组添加到第一个数组的末尾

有什么想法吗?

这个怎么样

array\u merge\u recursive()合并一个或多个数组的元素 一起,以便将一的值附加到 上一个。它返回结果数组

编辑:如果array\u merge\u recursive不适合您,请尝试此操作


这让我非常期待,您只需
array\u merge()
这两个数组的元素:

Array
(
    [1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
            [6] => TIME
            [7] => Lorem
            [8] => Ipsum
        )

    [2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
            [6] => TIME
            [7] => Some
            [8] => Text
        )
)

更新:

在下面的评论中,您询问是否可以将此方法推广到合并任意数量的数组。确保这是可能的,您只需添加另一个迭代层:

Array
(
    [1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
            [6] => TIME
            [7] => Lorem
            [8] => Ipsum
            [9] => C1a
            [10] => C1b
        )

    [2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
            [6] => TIME
            [7] => Some
            [8] => Text
            [9] => C2a
            [10] => C2b
            [11] => C2b
        )

)

是否要创建多维数组

那很容易

    $array1 = [
        [1,2,3,4],
        [6,7,8,9]
    ];
    $array2 = [
        ['a','b'],
        ['c', 'd']
    ];
    $array3 = [];
    foreach (range(0, max(count($array1), count($array2))-1) as $i) {
        $part1 = isset($array1[$i]) ? $array1[$i] : [];
        $part2 = isset($array2[$i]) ? $array2[$i] : [];
        $array3[] = array_merge($part1, $part2);
    }

您可以尝试以下方法:


每个数组中有2个数组,所以将每个数组与其对应的数组合并,而不是主数组。您尝试过吗?请尝试您自己的代码。您将看到,它不会产生问题中所述的输出。您是对的,我先发制人,没有完成问题。我尝试了这个方法,但没有成功,请参阅编辑的问题,了解我使用array\u merge()和array\u merge\u recursive()Genius获得的输出。如果我有两个以上的阵列,这是否适用?如果我想将3个数组合并成一个?当然,我添加了一个变量作为答案的更新。
Array
(
    [1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
            [6] => TIME
            [7] => Lorem
            [8] => Ipsum
        )

    [2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
            [6] => TIME
            [7] => Some
            [8] => Text
        )
)
<?php
$target = [
    1 => ['2017-07-13 00:00:00', 'Foo', 'Bar', 16.11, 80.56, 96.67],
    2 => ['2017-07-13 00:00:00', 'Foo', 'Bar', 1.23, 50.69, 14.24]
];
$sources = [
    'B' => [
        1 => ['TIME', 'Lorem', 'Ipsum'],
        2 => ['TIME', 'Some', 'Text']
    ],
    'C' => [
        1 => ['C1a', 'C1b'],
        2 => ['C2a', 'C2b', 'C2b']
    ]
];

array_walk($sources, function($source) use (&$target) {
    array_walk($source, function($values, $key) use (&$target) {
        $target[$key] = array_merge($target[$key], $values);
    });
});
print_r($target);
Array
(
    [1] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 16.11
            [4] => 80.56
            [5] => 96.67
            [6] => TIME
            [7] => Lorem
            [8] => Ipsum
            [9] => C1a
            [10] => C1b
        )

    [2] => Array
        (
            [0] => 2017-07-13 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 1.23
            [4] => 50.69
            [5] => 14.24
            [6] => TIME
            [7] => Some
            [8] => Text
            [9] => C2a
            [10] => C2b
            [11] => C2b
        )

)
$new_array[] = $array_1;
$new_array[] = $array_2;
    $array1 = [
        [1,2,3,4],
        [6,7,8,9]
    ];
    $array2 = [
        ['a','b'],
        ['c', 'd']
    ];
    $array3 = [];
    foreach (range(0, max(count($array1), count($array2))-1) as $i) {
        $part1 = isset($array1[$i]) ? $array1[$i] : [];
        $part2 = isset($array2[$i]) ? $array2[$i] : [];
        $array3[] = array_merge($part1, $part2);
    }