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

PHP 7中如何将多层嵌套子数组合并为单一数组?

解决PHP多层嵌套sub_option数组扁平化问题

核心解决方案:递归遍历处理

由于数组嵌套层级不固定,递归是最可靠的处理方式。以下函数可以将所有层级的sub_option子数组合并为一维数组,同时保留每个选项的非sub_option字段(若sub_option为NULL则保留):

function flattenOptions($options, &$result = []) {
    foreach ($options as $option) {
        // 复制当前选项并移除数组类型的sub_option
        $current = $option;
        if (isset($current['sub_option']) && is_array($current['sub_option'])) {
            unset($current['sub_option']);
        }
        $result[] = $current;
        
        // 递归处理子选项(仅当sub_option是数组时)
        if (isset($option['sub_option']) && is_array($option['sub_option'])) {
            flattenOptions($option['sub_option'], $result);
        }
    }
    return $result;
}

使用示例

将你的原始数组传入函数即可得到期望的一维数组:

// 原始嵌套数组
$originalArray = [
    [
        'price' => 100,
        'weight' => 42,
        'sub_option' => [
            [
                'price' => 25.99,
                'points' => 32,
                'sub_option' => [
                    [
                        'price' => 27.99,
                        'weight' => 83,
                        'sub_option' => [
                            [
                                'price' => 14.99,
                                'weight' => 50,
                                'sub_option' => NULL
                            ]
                        ]
                    ]
                ]
            ],
            [
                'price' => 24.99,
                'weight' => 25,
                'sub_option' => NULL
            ]
        ]
    ],
    [
        'price' => 100,
        'weight' => 4233,
        'sub_option' => NULL
    ]
];

// 生成扁平化数组
$flattenedArray = flattenOptions($originalArray);

print_r($flattenedArray);

输出结果与你期望的完全一致。

原代码问题分析

你之前的循环代码仅处理了两层嵌套,没有递归处理更深层级的sub_option,且每次内层循环会覆盖$arr2变量,最终仅将最后一个子选项与父选项合并,无法遍历所有嵌套层级。

内容的提问来源于stack exchange,提问作者Emir Aslan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:40:01