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

添加新评论