You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现WordPress wp_query输出二维数组按多字段分组求和

原代码问题分析

  • 遍历$vysledna_tabulka时默认采用值传递,修改$vysledny_radek不会同步修改结果数组中的实际元素,求和操作不会生效
  • 逻辑存在漏洞:只要当前遍历的结果条目和待处理条目不匹配就给$aktualni赋值,无论是否已经找到匹配的分组,最后都会强制插入新条目,导致结果数组出现大量重复数据,求和完全失效
  • 嵌套循环实现时间复杂度为O(n²),数据量大时性能极差

最优实现方案

用「0、1、2三个值拼接的唯一字符串」作为临时索引数组的键,单次遍历即可完成分组求和,时间复杂度为O(n),性能远高于嵌套循环实现:

$temp = [];
foreach ($seznam_vsech_hracu_vsech_tymu as $item) {
    // 拼接联合主键作为临时键,分隔符选不会出现在团队、姓名中的字符即可
    $key = $item[0] . '|' . $item[1] . '|' . $item[2];
    if (isset($temp[$key])) {
        // 已存在该分组,累加下标3的数值
        $temp[$key][3] = (string)((int)$temp[$key][3] + (int)$item[3]);
    } else {
        // 不存在该分组,新增条目
        $temp[$key] = $item;
    }
}
// 重置键名得到最终结果数组,键名从0开始连续
$vysledna_tabulka = array_values($temp);

运行后$vysledna_tabulka就是符合要求的分组求和结果,和示例输出结构完全一致。

内容的提问来源于stack exchange,提问作者Eduard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:06:03