合并关联数组中相同键的值并统计总和(按 x_axis 分组累加 y_axis)
PHP 数组分组聚合:按 x_axis 合并并累加 y_axis 值的完整指南

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
本文详细讲解在 PHP 中如何对二维关联数组进行高效分组与聚合运算,通过指定分组键(如 x_axis)对数值键(如 y_axis)进行累加合并,生成去重且结构清晰的汇总数组,适用于数据统计、报表生成及图表数据预处理等多种场景。
在 PHP 数据处理与统计分析过程中,开发者经常需要处理包含重复维度的二维数据集。例如,从数据库查询或 API 接口获取的原始数据中,可能存在多条记录共享相同的分类标识(如日期、用户ID、产品编号或坐标标签 x_axis),而我们需要将这些重复项合并,并对其对应的数值指标(如 y_axis)进行求和计算。具体而言,我们面对的是一个由关联数组构成的二维数组,每个子数组结构为 ['x_axis' => $x, 'y_axis' => $y]。目标是将所有 x_axis 值相同的记录聚合为一条,并将其对应的 y_axis 值累加,最终输出一个无重复键且包含总和的新数组。
实现这一需求的核心算法非常明确:首先,以 x_axis 的值作为唯一键,创建一个临时哈希映射(关联数组)用于累积求和;接着,遍历原始数据,将每条记录的 y_axis 值累加到映射中对应的键上;最后,将聚合后的映射转换回标准的索引数组格式。 以下是一种经过优化的 PHP 实现方案,兼具高性能、强健壮性与良好的代码可读性:
$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),相比传统的嵌套循环或多次
array_filter方案,性能显著提升,尤其适合处理大规模数据集; - 代码中使用了空合并运算符
??提供默认值,能优雅处理数组键缺失的情况,避免产生未定义索引警告,提升代码健壮性; - 若需保持输出结果中
x_axis的顺序与原始数据首次出现顺序一致,可在第二步重构前,通过记录首次出现的键序或结合array_keys与自定义排序来实现; - 该模式具备高度可扩展性。例如,除了求和,你可能还需要计算平均值、最大值、最小值或统计记录条数。只需将聚合映射中的值从标量改为数组或对象,存储多个统计指标即可轻松实现。
总而言之,这种基于键值对数组进行分组聚合的操作,是 PHP 开发中一项极为常见且重要的数据处理技能。无论是为前端 ECharts、Highcharts 等图表库准备聚合数据、生成业务统计报表,还是整合多个数据源的返回结果,掌握高效、清晰的数组分组求和技巧都能让你的代码更加专业和高效。
相关攻略
在现代社会,口号不仅是简单的标语,更是凝聚共识、引导行为的有力工具。一句有深度的口号,往往能潜移默化地促进团队和谐,推动积极行动。那么,如何打造既个性鲜明又直击人心的口号呢?今天,我们就聚焦于一个至关重要的安全领域——防火,为大家整理了一份精炼实用的标语合集。这些口号经过精心筛选,言简意赅,希望能为
农村防火标语(1--15条) 一句好的防火标语,就像社区编织的一张无形安全网,守护的是千家万户长久的安宁与幸福。 1、社区编织防火网,幸福生活万年长。 2、防火这事儿,人人有责。大家都上心,日子才能越过越红火。 3、数据不说谎:森林火灾,十有八九是人为因素引发的。 4、可别小看隐患。千里之堤,溃于蚁
防火标语口号大全:让安全警句深入人心 一句响亮、易懂的防火宣传口号,是传递安全意识最直接、最有效的工具。它能在瞬间抓住人们的注意力,将“预防为主、生命至上”的理念深植于心,并在日常工作和生活中形成强大的行为约束力。本文系统梳理了适用于家庭、森林、工地、企业、农田等不同场景的防火标语与安全警句,旨在为
防火宣传标语(1-20) 1 全民总动员,防火保安全。 2 全民护林、人人防火。 3 一人把关一处安,众人防火稳如山。 4 时时注意森林防火、人人重视森林防火。 5 森林防火记心上,人人护林理应当。 6 山田年年耕、防火天天讲。 7 保护消防设施,维护消防安全。 8 入山不带烟、野外
森林防火标语手抄报图片文案 “坚持生态效益、经济效益、社会效益相结合,突出生态效益。”这句话点明了现代林业发展的核心。如今信息传播触手可及,我们每天都能接触到海量内容,其中那些简洁有力、直击人心的句子,往往最能留下深刻印象。你是否也有收集和分享精彩语句的习惯?下面整理的这份森林防火标语集锦,或许能为
热门专题
热门推荐
Go 语言错误处理最佳实践:编写简洁、健壮且符合 Go 风格的代码指南 Go 语言采用多返回值(值 + error)实现显式错误处理,其标准做法是在每次函数调用后立即检查 err 是否为 nil;虽然忽略错误在语法上可行,但这违背了 Go 的设计哲学,极易导致隐蔽的 panic 或难以追踪的逻辑错误
Python Flask接口请求频率限制实战:Flask-Limiter防刷指南 Flask-Limiter 初始化配置详解:避免应用上下文错误 应用上下文配置不当,是开发者初次集成 Flask-Limiter 时最常见的错误。核心症结在于,限流器必须在 Flask 应用实例完全初始化且应用上下文就
2026年可能涨100倍的币会是哪些? 市场总是在寻找下一个爆发点。如果说2026年的加密货币市场存在百倍增长的可能,那么机会大概率会落在那些手握硬核技术、生态正在快速扩张、并能精准切入新兴应用场景的项目上。纵观行业趋势与数据,有五个名字反复被提及:Sui、Filecoin、Cosmos、Kaspa
torch cuda empty_cache() 仅释放未被张量引用的缓存显存,不回收仍被变量或模型持有的显存;需配合 del、zero_grad() 和 no_grad() 才能有效释放。 为什么 torch cuda empty_cache() 经常不起作用? 简单来说,这个函数的作用范围非常有
如何在 WooCommerce 中隐藏无缩略图的产品 本文详细讲解如何通过自定义代码过滤 WooCommerce 商品查询,自动排除未设置特色图像(产品主图)的商品,确保店铺前台仅展示带有有效产品图片的商品条目,提升页面美观度与专业感。 你是否希望自己的 WooCommerce 在线商店前台只呈现那





