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

PHP如何按条件合并嵌套数组的指定键

合并嵌套数组中同company+type的子数组cars

嘿,我来帮你搞定这个数组合并的需求!针对你说的“仅当子数组的company和type都相同时,合并它们的cars数组”这个需求,用PHP可以这样实现:

实现思路

核心逻辑是通过company和type的组合生成唯一标识,把相同标识的子数组归为一组,然后合并它们的cars数组。具体步骤:

  • 用一个临时数组存储分组后的结果
  • 遍历原数组,为每个子数组生成company|type格式的唯一键
  • 相同键的子数组就合并cars,不同键的直接加入临时数组
  • 最后把临时数组转成和原数组格式一致的索引数组

完整代码示例

// 你的示例输入数组(补全了未写完的部分)
$originalArray = [
    [
        'company' => 'Jeep',
        'type' => 'SUV',
        'cars' => ['Compass']
    ],
    [
        'company' => 'Jeep',
        'type' => 'SUV',
        'cars' => ['Wrangler']
    ],
    [
        'company' => 'Mercedes',
        'type' => 'Sedan',
        'cars' => ['C-Class']
    ],
    [
        'company' => 'Mercedes',
        'type' => 'Sedan',
        'cars' => ['E-Class']
    ]
];

// 初始化临时数组用于分组存储
$mergedArray = [];

foreach ($originalArray as $item) {
    // 生成唯一键:用company和type拼接,确保相同组合的子数组被分到同一组
    $uniqueKey = $item['company'] . '|' . $item['type'];
    
    if (isset($mergedArray[$uniqueKey])) {
        // 如果该组合已存在,合并两个cars数组
        $mergedArray[$uniqueKey]['cars'] = array_merge(
            $mergedArray[$uniqueKey]['cars'], 
            $item['cars']
        );
        // 如果你需要去重(比如担心有重复的车型),可以加上这行:
        // $mergedArray[$uniqueKey]['cars'] = array_unique($mergedArray[$uniqueKey]['cars']);
    } else {
        // 组合不存在,直接将当前子数组加入临时数组
        $mergedArray[$uniqueKey] = $item;
    }
}

// 把关联数组转为连续索引数组(和原数组格式保持一致)
$finalResult = array_values($mergedArray);

// 打印结果看看
print_r($finalResult);

运行结果

执行上述代码后,你会得到合并后的数组:

Array
(
    [0] => Array
        (
            [company] => Jeep
            [type] => SUV
            [cars] => Array
                (
                    [0] => Compass
                    [1] => Wrangler
                )

        )

    [1] => Array
        (
            [company] => Mercedes
            [type] => Sedan
            [cars] => Array
                (
                    [0] => C-Class
                    [1] => E-Class
                )

        )

)

这个方案灵活且高效,不管你的数组有多少个子项,都能快速完成合并。如果有特殊需求(比如去重、排序cars),也可以在代码里轻松调整~

内容的提问来源于stack exchange,提问作者Rahul Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:48