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

多维数组按day去重并聚合求和movements值问题求助

解决按Day合并数组并累加Movements的问题

我来帮你搞定这个数组处理的需求——你需要把数组中day值相同的项合并,同时对对应的movements字段求和,保留唯一的day值对吧?先分析下你现有方案的问题,再给你正确的实现方法。

现有方案的问题

  • 你提到的sum-array-values-of-the-same-key方法会把所有同键名的值都求和,包括day字段(把字符串"11"当成数字处理求和,显然不符合预期)。
  • 你自己编写的代码逻辑有问题:你是在对比$arr1和$arr2相同索引位置的day值,这只有当两个数组对应位置的day完全一致时才会生效,但实际相同day的项可能分散在不同索引;而且每次循环都array_push($sum, $result),会导致结果数组里出现大量重复或错误的项。

正确的实现方法

情况1:处理单个数组(比如你给出的基础数组示例)

我们可以用day作为临时数组的键,快速判断是否已经存在该day的项,存在就累加movements,不存在就初始化项,最后再转成数字索引数组:

// 假设这是你的基础数组
$originalArray = [
    ['day' => '11', 'movements' => 1],
    ['day' => '11', 'movements' => 1],
    ['day' => '11', 'movements' => 1],
    ['day' => '12', 'movements' => 1],
    ['day' => '12', 'movements' => 1],
    ['day' => '12', 'movements' => 1],
];

$summedArray = [];
foreach ($originalArray as $item) {
    $day = $item['day'];
    // 如果当前day已经在结果数组中,累加movements
    if (isset($summedArray[$day])) {
        $summedArray[$day]['movements'] += $item['movements'];
    } else {
        // 否则初始化该day的项
        $summedArray[$day] = [
            'day' => $day,
            'movements' => $item['movements']
        ];
    }
}

// 把关联数组转成数字索引数组,符合你期望的格式
$summedArray = array_values($summedArray);

运行后$summedArray的结果就是:

[
    ['day' => '11', 'movements' => 3],
    ['day' => '12', 'movements' => 3],
]

情况2:处理两个数组($arr1和$arr2)合并后求和

如果你的需求是把$arr1和$arr2的所有项合并,再按day求和movements,只需要先合并两个数组,再用上面的逻辑处理:

$arr1 = $stats['data']['vhc'];
$arr2 = $data['vhc'];

// 先合并两个数组
$combinedArray = array_merge($arr1, $arr2);

$summedArray = [];
foreach ($combinedArray as $item) {
    $day = $item['day'];
    if (isset($summedArray[$day])) {
        $summedArray[$day]['movements'] += $item['movements'];
    } else {
        $summedArray[$day] = [
            'day' => $day,
            'movements' => $item['movements']
        ];
    }
}

$summedArray = array_values($summedArray);

这个方法的优势是效率高,只需要遍历一次数组,而且能准确处理所有分散在不同位置的同day项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:55:51