如果优雅最简单快速地将二维数组转换为一维数组, 或者将多维数组转换为一维数组

怎么最简单,快速将多维数组展开平铺为一维数组? 以下为博主的总结供参考:分为平铺展开的深度为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
)

来自我的博客(https://blog.nice100.net/default/45.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值