You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:08:41