部分展平多维数组

发布于 2024-11-11 04:06:18 字数 538 浏览 6 评论 0原文

将数组转换为以下形式的好方法是什么

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

What would be a good way to transform an array that looks like:

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

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

        )
)

to

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

病女 2024-11-18 04:06:18

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

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

它使用 array_map 来调用 array_shift 在输入数组的每个元素上,这将为您提供每个子数组的第一个元素!漂亮的小单线,不是吗?

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

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

This might be a rather neat way of doing it

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

This uses array_map to call array_shift on each each element of the input array, which will give you the first element of each sub-array! Nice little one-liner, no?

Nice as it is, it's not terribly efficient as array_shift does more work than we need - a simple loop is actually far faster (I just did a quick benchmark on an array with 1000 elements and this was around 6x faster)

$output=array();
foreach ($input as $element){
    $output[]=$element[0];
}
最舍不得你 2024-11-18 04:06:18
$new=array();
foreach($array as $a){
  $new[]=array_shift($a);
}
$new=array();
foreach($array as $a){
  $new[]=array_shift($a);
}
猫烠⑼条掵仅有一顆心 2024-11-18 04:06:18

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

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

希望有所帮助。

If your array is $my_array and has 2 elements, you can:

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

Hope that helped.

执着的年纪 2024-11-18 04:06:18
$new=array();
foreach ($array as $a){
$new[]=$a[0];
}

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

print_r($new);
离去的眼神 2024-11-18 04:06:18

我想大家都想多了。这正是 array_column() 的作用。

代码:(演示

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

I think everyone over thought this one. This is exactly what array_column() does.

Code: (Demo)

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

Output:

array (
  0 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
  1 => 
  array (
    'key' => 'val',
    'key2' => 'val2',
  ),
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文