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

PHP7.4下按状态数组分组多列数组并对每组对应数值求和实现问题

PHP7.4 按状态分组累加多数组对应值实现方案

实现逻辑如下:

  • 以关联下标为基准遍历所有数组,用状态作为临时聚合数组的键,累加对应维度的数值
  • 聚合完成后将临时数组拆分重组为你需要的目标结构

可用代码如下:

<?php
$statuses = ['PROSPECT', 'BACKLOG', 'PROSPECT'];
$of_tranxs = [2, 1, 2];
$revs = [3, 1, 3];
$mgps = [4, 1, 4];

// 临时聚合数组,key为状态值
$tempAgg = [];
foreach ($statuses as $index => $status) {
    if (!isset($tempAgg[$status])) {
        $tempAgg[$status] = [
            'of_tranx' => 0,
            'rev' => 0,
            'mgp' => 0
        ];
    }
    // 累加对应下标的数值
    $tempAgg[$status]['of_tranx'] += $of_tranxs[$index];
    $tempAgg[$status]['rev'] += $revs[$index];
    $tempAgg[$status]['mgp'] += $mgps[$index];
}

// 转换为目标结构
$result = [
    'status' => array_keys($tempAgg),
    'of_tranx' => array_column($tempAgg, 'of_tranx'),
    'rev' => array_column($tempAgg, 'rev'),
    'mgp' => array_column($tempAgg, 'mgp')
];

print_r($result);

运行上述代码输出的结果和你要求的结构完全一致。
你之前使用的array_zip_combine不是PHP原生提供的函数,且这类数组拼接方法本身无法实现分组累加的逻辑,直接遍历下标的方案逻辑更清晰,在PHP7.4版本中可正常运行,性能也更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:04