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