部分展平多维阵列

时间:2011-05-31 21:46:56

标签: php multidimensional-array flatten array-column

转换看起来像这样的数组的好方法是什么:

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

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

        )
)

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

5 个答案:

答案 0 :(得分:5)

这可能是一种相当简洁的方式

$output=array_map('array_shift', $input);

这使用array_map在输入数组的每个元素上调用array_shift,这将为您提供每个子数组的第一个元素!漂亮的小单行,没有?

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

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

答案 1 :(得分:1)

$new=array();
foreach($array as $a){
  $new[]=array_shift($a);
}

答案 2 :(得分:0)

$new=array();
foreach ($array as $a){
$new[]=$a[0];
}

print_r($new);

答案 3 :(得分:0)

如果您的数组是$my_array且有2个元素,您可以:

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

希望有所帮助。

答案 4 :(得分:0)

我想大家都在想这个。这正是array_column()所做的。

代码:(Demo

$array=[
    [
        ['key'=>'val','key2'=>'val2']
    ],
    [
        ['key'=>'val','key2'=>'val2']
    ]
];
var_export(array_column($array,0));

输出:

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