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

您的位置:首页 >按 x\_axis 分组累加 y\_axis 总和

按 x\_axis 分组累加 y\_axis 总和

  发布于2026-04-09 阅读(0)

扫一扫,手机访问

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

本文介绍如何在 PHP 中对二维关联数组按指定键(如 x_axis)分组,并将对应另一键(y_axis)的值进行累加合并,最终生成去重且聚合后的结构化数组。

本文介绍如何在 PHP 中对二维关联数组按指定键(如 x_axis)分组,并将对应另一键(y_axis)的值进行累加合并,最终生成去重且聚合后的结构化数组。

在数据处理场景中,常需对具有重复分类标识(如时间戳、ID、坐标轴标签等)的数值型记录进行聚合汇总。例如,给定一组形如 ['x_axis' => $x, 'y_axis' => $y] 的数据,当多个元素拥有相同的 x_axis 值时,需将其对应的 y_axis 值相加,合并为单条记录。

实现该逻辑的核心思路是:以 x_axis 为键构建临时聚合映射表,遍历原始数组累计 y_axis 值,最后重新格式化为标准索引数组。以下为推荐实现:

<?php
function mergeByXAxis(array $data): array
{
    $aggregated = [];

    // 第一步:按 x_axis 聚合 y_axis 总和
    foreach ($data as $item) {
        $x = $item['x_axis'] ?? null;
        $y = $item['y_axis'] ?? 0;

        if ($x !== null) {
            $aggregated[$x] = ($aggregated[$x] ?? 0) + $y;
        }
    }

    // 第二步:重构为原始结构的索引数组
    $result = [];
    foreach ($aggregated as $x => $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 和计数 occurrence),可扩展为存储子数组或对象。

此模式广泛适用于图表数据预处理、报表统计、API 响应聚合等场景,是 PHP 数组操作中的典型实用技巧。

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

热门关注