嵌套数组处理:合并首元素相同的子数组对应元素
合并嵌套数组中首元素相同的子数组
需求说明
给定嵌套数组:
$cars = [ [2022, "Corolla"], [2022, "Toyota"], [2021, "Corolla"], [2021, "Toyota"], [2021, "Honda"] ];
需要把首元素(年份)相同的子数组合并,将对应车型整合到同一子数组,最终得到:
$resultCars = [ [2022, "Corolla", "Toyota"], [2021, "Corolla", "Toyota", "Honda"] ];
实现方案
通过遍历分组+格式转换即可完成,代码如下:
$cars = [ [2022, "Corolla"], [2022, "Toyota"], [2021, "Corolla"], [2021, "Toyota"], [2021, "Honda"] ]; $grouped = []; foreach ($cars as $item) { $year = $item[0]; $model = $item[1]; // 初始化年份分组 if (!isset($grouped[$year])) { $grouped[$year] = [$year]; } // 追加车型到对应分组 $grouped[$year][] = $model; } // 转换为索引数组,得到目标结果 $resultCars = array_values($grouped); // 验证输出 print_r($resultCars);
逻辑解释
- 用
$grouped临时关联数组存储分组结果,键为年份,值是包含年份和所有对应车型的数组; - 遍历原始数组时,先检查当前年份是否已有分组,没有则创建以年份开头的子数组;
- 把车型追加到对应年份的分组里;
- 最后用
array_values()把关联数组转为索引数组,结构就和目标一致了。
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

