合并关联数组中相同键的值并求和:PHP 实用教程
对二维关联数组按指定键分组,将对应另一键的值累加,生成去重聚合后的数组。采用临时键映射加二次重组策略,遍历原数组累加,再还原为标准格式。适用于数据统计与图表预处理,需确保输入包含所需键,方法高效无依赖。
本文介绍如何在 PHP 中对二维关联数组按指定键(如 x_axis)分组,并将对应另一键(如 y_axis)的值累加,最终生成去重且聚合后的数组。方法简洁高效,适用于数据统计、图表预处理等场景。
在实际开发中,我们常需对原始数据进行聚合处理——例如将多个坐标点按横坐标(x_axis)归类,并将其纵坐标(y_axis)值相加,以生成汇总后的折线图或柱状图数据源。核心需求是:以 x_axis 为分组依据,对同组所有 y_axis 值求和,保留唯一 x_axis 条目。
实现该逻辑最清晰的方式是使用「临时键映射 + 二次重组」策略:
- 遍历原数组,以 x_axis 值作为临时数组的键,累加对应的 y_axis;
- 再次遍历临时数组,将键值对还原为标准的关联子数组格式。
以下是完整可运行的示例代码:
8, 'y_axis' => 1], ['x_axis' => 9, 'y_axis' => 1], ['x_axis' => 11, 'y_axis' => 2], ['x_axis' => 11, 'y_axis' => 3],];function mergeByXAxis(array $data): array{ $temp = []; foreach ($data as $item) { $x = $item['x_axis'] ?? null; $y = $item['y_axis'] ?? 0; if ($x !== null) { $temp[$x] = ($temp[$x] ?? 0) + $y; } } $result = []; foreach ($temp as $x => $y) { $result[] = ['x_axis' => $x, 'y_axis' => $y]; } return $result;}print_r(mergeByXAxis($data));?>✅ 输出结果:
Array( [0] => Array ( [x_axis] => 8 [y_axis] => 1 ) [1] => Array ( [x_axis] => 9 [y_axis] => 1 ) [2] => Array ( [x_axis] => 11 [y_axis] => 5 ))
⚠️ 注意事项:
- 确保输入数组每个子项都包含 x_axis 和 y_axis 键,否则建议添加 isset() 或空值校验(如示例中所做);
- 若需保持原始 x_axis 的出现顺序(而非 PHP 数组键自然排序),可在第二步使用 array_keys($temp) 配合 ksort() 或预先记录顺序;
- 对于超大数据集(如万级元素),此 O(n) 双循环方案依然高效,无需引入额外扩展。
该方法语义明确、无依赖、易维护,是 PHP 数组聚合操作的经典实践模式。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















