商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 合并关联数组中相同键的值并求和:PHP 实用教程

合并关联数组中相同键的值并求和:PHP 实用教程

  发布于2026-07-19 阅读(0)

扫一扫,手机访问

本文介绍如何在 PHP 中对二维关联数组按指定键(如 x_axis)分组,并将对应另一键(如 y_axis)的值累加,最终生成去重且聚合后的数组。方法简洁高效,适用于数据统计、图表预处理等场景。

在实际开发中,我们常需对原始数据进行聚合处理——例如将多个坐标点按横坐标(x_axis)归类,并将其纵坐标(y_axis)值相加,以生成汇总后的折线图或柱状图数据源。核心需求是:以 x_axis 为分组依据,对同组所有 y_axis 值求和,保留唯一 x_axis 条目

实现该逻辑最清晰的方式是使用「临时键映射 + 二次重组」策略:

  1. 遍历原数组,以 x_axis 值作为临时数组的键,累加对应的 y_axis;
  2. 再次遍历临时数组,将键值对还原为标准的关联子数组格式。

以下是完整可运行的示例代码:

 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 数组聚合操作的经典实践模式。

本文转载于:https://www.php.cn/faq/2311530.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注