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

PHP实现按fee列去重并汇总对应amount字段值

按fee字段分组并合并amount的解决方案

嘿,我懂你要做的事了——你需要把多维数组里fee值相同的项合并,把它们的amount加起来,同时保留其他字段对吧?你之前用array_sum(array_column(...))的方式确实不对,因为它只是把所有fee的值加总了,根本没按fee分组处理amount。

我给你写个简单的解决方案,用循环就能搞定,逻辑还特别清晰:

步骤说明

  1. 先创建一个空数组用来存最终结果
  2. 遍历你原有的数组,每一项都检查fee值是否已经在结果数组里存在
  3. 如果存在,就把当前项的amount累加到已有的那一项的amount上
  4. 如果不存在,就把当前项直接加入结果数组
  5. 最后如果需要把结果数组的键重置为连续数字,用array_values()处理一下就行

完整代码示例

// 你的原始数组
$feesArray = [
    12 => [
        'type' => 'Other Miscellaneous Fees',
        'fee' => 158,
        'amount' => -22.56,
        'code' => 'COL_AUDIO',
        'feedesc' => 'COLLEGE AUDIO VISUAL FEE'
    ],
    13 => [
        'type' => 'Other Miscellaneous Fees',
        'fee' => 158,
        'amount' => -297.86,
        'code' => 'COL_AUDIO',
        'feedesc' => 'COLLEGE AUDIO VISUAL FEE'
    ],
    14 => [
        'type' => 'Other Miscellaneous Fees',
        'fee' => 182,
        'amount' => -40.00,
        'code' => 'STRAP',
        'feedesc' => 'ID STRAP'
    ],
    15 => [
        'type' => 'Other Miscellaneous Fees',
        'fee' => 177,
        'amount' => -105.00,
        'code' => 'PRISAA',
        'feedesc' => 'PRISAA'
    ]
];

// 初始化结果数组
$result = [];

foreach ($feesArray as $item) {
    $feeKey = $item['fee'];
    // 检查当前fee是否已经在结果数组中
    if (isset($result[$feeKey])) {
        // 累加amount
        $result[$feeKey]['amount'] += $item['amount'];
    } else {
        // 第一次出现,直接加入数组
        $result[$feeKey] = $item;
    }
}

// 如果需要把键重置为连续的数字索引,用array_values()
$result = array_values($result);

// 输出结果
print_r($result);

输出结果

运行这段代码后,你会得到和你期望完全一致的数组:

Array
(
    [0] => Array
        (
            [type] => Other Miscellaneous Fees
            [fee] => 158
            [amount] => -320.42
            [code] => COL_AUDIO
            [feedesc] => COLLEGE AUDIO VISUAL FEE
        )

    [1] => Array
        (
            [type] => Other Miscellaneous Fees
            [fee] => 182
            [amount] => -40
            [code] => STRAP
            [feedesc] => ID STRAP
        )

    [2] => Array
        (
            [type] => Other Miscellaneous Fees
            [fee] => 177
            [amount] => -105
            [code] => PRISAA
            [feedesc] => PRISAA
        )

)

补充说明

这里默认了相同fee的其他字段(比如type、code、feedesc)都是一样的,如果你的实际场景里可能有不同的情况,那你需要额外处理这些字段的保留规则(比如保留第一个出现的,或者合并等),不过从你的示例来看,这个逻辑完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:45:37