将一维数组作为新行附加到二维数组

问题描述 投票:0回答:3

我有 2 个具有不同维度的不同数组,我需要合并它们才能获得具有特定结构的结果:

第一:

Array
(
    [0] => Array
        (
            [0] => 2017-11-03
            [1] => 2017-11-05
            [2] => 1
        )

    [1] => Array
        (
            [0] => 2017-11-23
            [1] => 2017-11-25
            [2] => 1
        )

)

第二个:

Array
(
    [0] => 2017-12-26
    [1] => 2018-01-30
)

结果应该是:

Array
    (
        [0] => Array
            (
                [0] => 2017-11-03
                [1] => 2017-11-05
                [2] => 1
            )

        [1] => Array
            (
                [0] => 2017-11-23
                [1] => 2017-11-25
                [2] => 1
            )

        [2] => Array
            (
                [0] =>2017-12-26
                [1] => 2018-01-30
                [2] => 1
            )

    )

我尝试使用 array_merge 但它不起作用,因为它们的维度不同。我还需要第二个选项卡中的一个元素 ([2] => 1)。

php arrays multidimensional-array append array-push
3个回答
0
投票
<?php

$array=Array
(
    0 => Array
    (
        0 => '2017-11-03',
            1 => '2017-11-05',
            2 => '1',
        ),

    1 => Array
(
    0=> '2017-11-23',
            1 => '2017-11-25',
            2 => '1'
        ),


);

$arraySmall=Array
(
    0 => '2017-12-26',
    1 => '2018-01-30'
);


array_push($arraySmall, "1");
array_push($array, $arraySmall);
echo'<pre>';
print_r($array);

输出是:

Array
(
    [0] => Array
        (
            [0] => 2017-11-03
            [1] => 2017-11-05
            [2] => 1
        )

    [1] => Array
        (
            [0] => 2017-11-23
            [1] => 2017-11-25
            [2] => 1
        )

    [2] => Array
        (
            [0] => 2017-12-26
            [1] => 2018-01-30
            [2] => 1
        )

)

即使没有这条线,这种方式也可以工作

array_push($arraySmall, "1");
你可以尝试一下。为了“合并”,你需要相同的大小,但为了“推送”,你不需要。因此,如果您推荐我告诉您的那一行,输出将如下所示:

Array
(
    [0] => Array
        (
            [0] => 2017-11-03
            [1] => 2017-11-05
            [2] => 1
        )

    [1] => Array
        (
            [0] => 2017-11-23
            [1] => 2017-11-25
            [2] => 1
        )

    [2] => Array
        (
            [0] => 2017-12-26
            [1] => 2018-01-30
        )

)

0
投票

您所描述的是附加,而不是合并。试试这个:

$arraySecond[] = 1;           // This adds [2]=> 1
$arrayFirst[] = $arraySecond; // This adds second array to end of first

0
投票

对于您给出的示例:

$x = ... // first array [2 dimensions]
$y = ... // second array [1 dimension]

$y = array_merge($y, array_diff($x[0], $y)); // add missing '1' to $y or any other key that are present in elements of $x and have to be added to $y

$x[] = $y; // append the 1-dim array as the new element in $x
© www.soinside.com 2019 - 2024. All rights reserved.