Php 部分展平多维数组

Php 部分展平多维数组,php,multidimensional-array,flatten,array-column,Php,Multidimensional Array,Flatten,Array Column,转换数组的好方法是什么: Array ( [0] = Array ( [0] = Array ( [key] = val [key2] = val2 ) ) [1] = Array ( [0] = Array ( [key] = val

转换数组的好方法是什么:

Array (
    [0] = Array (
            [0] = Array (
                    [key] = val
                    [key2] = val2
                )

        )
    [1] = Array (
            [0] = Array (
                    [key] = val
                    [key2] = val2
                )

        )
)


这可能是一种相当巧妙的方法

$output=array_map('array_shift', $input);
这用于调用输入数组的每个元素,这将为您提供每个子数组的第一个元素!很好的一条线,不是吗

虽然很好,但它的效率并不是很高,因为array_shift做的工作比我们需要的要多-一个简单的循环实际上要快得多我刚刚在一个包含1000个元素的数组上做了一个快速基准测试,这大约快了6倍

$output=array();
foreach ($input as $element){
    $output[]=$element[0];
}

这可能是一种相当巧妙的方法

$output=array_map('array_shift', $input);
这用于调用输入数组的每个元素,这将为您提供每个子数组的第一个元素!很好的一条线,不是吗

虽然很好,但它的效率并不是很高,因为array_shift做的工作比我们需要的要多-一个简单的循环实际上要快得多我刚刚在一个包含1000个元素的数组上做了一个快速基准测试,这大约快了6倍

$output=array();
foreach ($input as $element){
    $output[]=$element[0];
}
如果您的数组是$my_数组,并且有2个元素,则可以:

$my_array = array_merge($my_array[0], $my_array[1]);
希望对您有所帮助。

如果您的数组是$my\u数组,并且有2个元素,您可以:

$my_array = array_merge($my_array[0], $my_array[1]);

希望有帮助。

我想每个人都仔细考虑了这一点。这正是array_column所做的

代码:

输出:

array (
  0 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
  1 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
)

我想每个人都想得太多了。这正是array_column所做的

代码:

输出:

array (
  0 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
  1 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
)

你是说$new[]=$a[0];?另外,您不应该首先创建新阵列吗$新建=数组?对于代码片段,我假设已经理解了一些基础知识。您是说$new[]=$a[0];?另外,您不应该首先创建新阵列吗$新建=数组?对于代码片段,我假设已经理解了一些基础知识;哈哈,真的,让我把它变得容易一点;有趣的是,我也这么做了,希望它能更快——虽然它和数组移位差不多。有趣的是,我也这么做了,希望它能更快——虽然它和数组移位差不多。