PHP中将多维数组转换为一维数组的实现方法求助
解决PHP多维数组扁平化问题
没问题,我来帮你搞定这个数组结构转换的需求!你现在的数组是两层嵌套的结构,目标是把所有最内层的元素都合并到一个一维数组里,下面给你几种实用的解决方案:
方案1:用array_merge+解包运算符(PHP 5.6+)
这是最简洁的写法,利用PHP的解包运算符...把外层的子数组拆成array_merge的多个参数,直接合并成一个新数组:
// 你的原始数组 $originalArray = [ [ ['title' => 'a', 'title_num' => 1, 'status' => 1], ['title' => 'Mr', 'title_num' => 82, 'status' => 1] ], [ ['title' => 'b', 'title_num' => 25, 'status' => 2], ['title' => 'c', 'title_num' => 45, 'status' => 2] ] ]; // 扁平化处理 $flattenedArray = array_merge(...$originalArray);
执行后$flattenedArray就是你想要的一维数组结构。
方案2:兼容低版本PHP(<5.6)
如果你的PHP版本低于5.6,不支持解包运算符,可以用call_user_func_array来实现同样的效果:
$flattenedArray = call_user_func_array('array_merge', $originalArray);
这个函数会把$originalArray里的每个子数组作为独立参数传给array_merge,最终合并成目标数组。
方案3:循环遍历(全版本兼容)
如果你想要最稳妥、兼容性最好的写法,直接用两层循环遍历即可:
$flattenedArray = []; foreach ($originalArray as $subArray) { foreach ($subArray as $item) { $flattenedArray[] = $item; } }
这种写法逻辑清晰,不管什么PHP版本都能正常运行,也容易理解和调试。
另外补充一下:你提到的array_flatten其实是Laravel框架的辅助函数,原生PHP并没有这个内置函数;而array_map单独使用的话,主要是对数组元素做映射转换,没办法直接帮你合并嵌套的层级,所以不太适合这个场景。
内容的提问来源于stack exchange,提问作者Naveen N
相关产品推荐
相关产品推荐

