如何在不创建额外数组级别的情况下组合两个数组?

时间:2016-08-25 17:33:55

标签: php arrays multidimensional-array

我使用以下代码将2个数组组合成一个新数组:

$newarray = array($array1, $array2);

输出如下:

Array
(
  [0] => Array
     (
        [0] => 3
        [1] => 1
     )
  [1] => Array
    (
        [0] => Array
            (
                [0] => 4
                [1] => 7
            )

        [1] => Array
            (
                [0] => 20
                [1] => 10
            )
    )
)

但是我想改变结构,所以数组将是这样的:

Array
(
  [0] => Array
     (
       [0] => 3
       [1] => 1
     )
  [1] => Array
     (
       [0] => 4
       [1] => 7
     )
   [2] => Array
      (
        [0] => 20
        [1] => 10
       )
)

有没有办法改变结构?

2 个答案:

答案 0 :(得分:2)

您可以使用array_merge代替array

$new_array = array_merge([$array1], $array2);

请注意,要使其正常工作,$array1需要包装在另一个数组中:[$array1]。否则,$array1最终将成为$array2的父级,而不是其兄弟,并且您将获得

[3, 1, [4, 7], [20,10]]

代替。

答案 1 :(得分:0)

我写了一个简单的函数,以你想要的方式制作你的数组。看看这段代码:

<?php

//array for testing
$inputArray = [
    [3, 1],
    [
        [4,7],
        [20,10],
    ],
];

function transformArray($inputArray)
{
    $result = [];
    foreach($inputArray as $key=>$elem)
    {
        if(is_array($elem[0]))
            $result = array_merge($result,transformArray($inputArray[$key]));
        else
            $result[] = $elem;
    }

    return $result;
}

//test result
print_r(transformArray($inputArray));

结果是:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 1
        )

    [1] => Array
        (
            [0] => 4
            [1] => 7
        )

    [2] => Array
        (
            [0] => 20
            [1] => 10
        )
)

工作示例:CLICK