您的位置:首页 >合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)
发布于2026-05-03 阅读(0)
扫一扫,手机访问

本文介绍如何在 php 中对二维关联数组按指定键(如 x_axis)分组,并将对应另一键(y_axis)的值进行累加合并,最终生成去重且聚合后的结构化数组。
在数据处理时,我们经常会遇到一种情况:手头有一批结构相同的数据记录,它们按照某个维度(比如时间、ID或者坐标标签)重复出现,而我们需要做的,就是把相同维度的数值汇总起来。说得具体点,就是处理一个二维关联数组,里面每个元素都像 ['x_axis' => $x, 'y_axis' => $y] 这样。当多个元素拥有相同的 x_axis 值时,我们的目标是把它们对应的 y_axis 值加起来,最终合并成一条条不重复的汇总记录。
那么,怎么实现这个逻辑呢?核心思路其实很清晰:以 x_axis 的值作为“钥匙”,构建一个临时的聚合映射表;然后遍历原始数组,把遇到的 y_axis 值不断累加到对应的“钥匙”下面;最后,再把这个映射表重新整理成我们最初需要的标准索引数组格式。 下面这个实现方案,兼顾了效率和可读性,是经过实践检验的推荐写法:
$y) {
$result[] = ['x_axis' => $x, 'y_axis' => $y];
}
return $result;
}
// 示例数据
$data = [
['x_axis' => 8, 'y_axis' => 1],
['x_axis' => 9, 'y_axis' => 1],
['x_axis' => 11, 'y_axis' => 2],
['x_axis' => 11, 'y_axis' => 3],
];
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 在原始数据中首次出现的顺序,可以在第二步重构数组时,结合 array_keys($aggregated) 并对原始数组进行预扫描来实现;y_axis,你还想同时统计出现的次数,那么只需把聚合映射表里存储的值,从一个简单的数字扩展成一个包含多个字段的子数组或对象即可。话说回来,这种按维度分组聚合的操作,在开发中实在太常见了。无论是为前端图表准备数据、进行报表统计,还是聚合多个API的响应,它都是一个非常典型且实用的PHP数组处理技巧。掌握它,能让你的数据处理代码既简洁又高效。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9