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



我正在使用下面的代码将两个数组组合成一个新的数组:

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

有没有办法改变结构?

你可以用array_merge代替array

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

请注意,为了这个工作,$array1需要包装在另一个数组:[$array1]。否则,$array1将最终成为$array2的父元素,而不是它的兄弟元素,您将得到

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

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

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

工作示例:点击

相关内容

  • 没有找到相关文章

最新更新