怎么最简单,快速将多维数组展开平铺为一维数组? 以下为博主的总结供参考:分为平铺展开的深度为2和全部平铺展开的:

先假设有个待展开数组:

$arr = [
    'a' => [
        'a1' => 'nice100.net',
        'a2' => 'good',
    ],
    'b' => [
        'b1' => [
            'b11' => 'nice',
            'b12' => 'like',
        ]
    ]
];
  • 平铺展开的深度为2:
//方法一
$result = call_user_func_array('array_merge', $arr);
//方法二(会更快)
$result = array_merge(...array_values($arr));
//结果输出
Array
(
    [a1] => nice100.net
    [a2] => good
    [b1] => Array
        (
            [b11] => nice
            [b12] => like
        )

)
  • 全部平铺展开
//如果要全部平铺展开,那么对于多维数组, array_merge函数就不能满足了,需要办理递归
$re = [];
array_walk_recursive($arr, function ($v, $k) use (&$re) {
    $re[$k] = $v;
}, $re);
//输入结果,注意如果存在相同的key,那么后者会覆盖前者
Array
(
    [a1] => nice100.net
    [a2] => good
    [b11] => nice
    [b12] => like
)

标签: none

添加新评论