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

PHP按EMI期限对嵌套循环生成的投资者数组分组求和

按EMI期限对投资者EMI数据分组求和

我通过以下PHP代码生成了一个investors数组,存储了多位投资者的多期EMI数据。现在需要按EMI期限对数组进行分组求和,生成示例所示的结果数组。

原始生成数组的代码

$investors = array();
for($i = 0; $i < 2 ; $i++){

    // 存入EMI数据开始
    $emiTenures = array();
    for($k = 0; $k < 3 ; $k++){
    
        $data =[
            'b_amount' => 1*$k+$i,
            'recv_total' => 1+$k+$i
        ]; 
        array_push($emiTenures,$data);   
    }
    // 存入EMI数据结束
    
    array_push($investors,$emiTenures);    
}
print_r($investors);

原始数组输出

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [b_amount] => 0
                    [recv_total] => 1
                )

            [1] => Array
                (
                    [b_amount] => 1
                    [recv_total] => 2
                )

            [2] => Array
                (
                    [b_amount] => 2
                    [recv_total] => 3
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [b_amount] => 1
                    [recv_total] => 2
                )

            [1] => Array
                (
                    [b_amount] => 2
                    [recv_total] => 3
                )

            [2] => Array
                (
                    [b_amount] => 3
                    [recv_total] => 4
                )

        )

)

预期分组求和结果

Array
(
    [0] => Array
        (
            [b_amount] => 1 // $investors[0][0]['b_amount'] + $investors[1][0]['b_amount']
            [recv_total] => 3 // $investors[0][0]['recv_total'] + $investors[1][0]['recv_total']
        )

    [1] => Array
        (
            [b_amount] => 3 // $investors[0][1]['b_amount'] + $investors[1][1]['b_amount']
            [recv_total] => 5 // $investors[0][1]['recv_total'] + $investors[1][1]['recv_total']
        )

    [2] => Array
        (
            [b_amount] => 5
            [recv_total] => 7
        )

)

实现代码

通过遍历投资者数组,按EMI期限的索引位置进行字段累加,即可得到目标结果:

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

foreach ($investors as $investorEmi) {
    foreach ($investorEmi as $index => $emiData) {
        // 初始化当前期限的求和项(如果未存在)
        if (!isset($result[$index])) {
            $result[$index] = [
                'b_amount' => 0,
                'recv_total' => 0
            ];
        }
        // 累加对应字段值
        $result[$index]['b_amount'] += $emiData['b_amount'];
        $result[$index]['recv_total'] += $emiData['recv_total'];
    }
}

print_r($result);

逻辑说明

  1. 先初始化空的结果数组$result;
  2. 外层遍历每位投资者的EMI数据数组;
  3. 内层遍历该投资者的每一期EMI数据,以期限的索引($index)作为分组依据;
  4. 若结果数组中当前索引的记录未初始化,则先创建初始值为0的结构;
  5. 分别累加b_amount和recv_total字段的值;
  6. 最终输出的$result即为按EMI期限分组求和后的数组。

内容的提问来源于stack exchange,提问作者MD IRFAN ALI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:05:19