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

您的位置:首页 >合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)

合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)

  发布于2026-05-03 阅读(0)

扫一扫,手机访问

合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)

合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)

本文介绍如何在 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
        )
)

? 有几个关键点需要留意:

  • 这个方法的时间复杂度是 O(n),比起传统的嵌套循环方案要高效得多,代码逻辑也一目了然;
  • 代码中使用了空合并操作符 ??,能安全地处理数组中可能缺失的键,大大增强了程序的健壮性;
  • 如果你需要保持 x_axis 在原始数据中首次出现的顺序,可以在第二步重构数组时,结合 array_keys($aggregated) 并对原始数组进行预扫描来实现;
  • 这个模式很容易扩展。比如,除了累加 y_axis,你还想同时统计出现的次数,那么只需把聚合映射表里存储的值,从一个简单的数字扩展成一个包含多个字段的子数组或对象即可。

话说回来,这种按维度分组聚合的操作,在开发中实在太常见了。无论是为前端图表准备数据、进行报表统计,还是聚合多个API的响应,它都是一个非常典型且实用的PHP数组处理技巧。掌握它,能让你的数据处理代码既简洁又高效。

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

热门关注