Php 如何根据某个索引获取数组值之和(未排序)

Php 如何根据某个索引获取数组值之和(未排序),php,arrays,multidimensional-array,sum,array-sum,Php,Arrays,Multidimensional Array,Sum,Array Sum,如果月份和全名在一个数组中相同,我需要月租和arc的总和 输入阵列 Array ( [0] => Array ( [0] => Array ( [id] => 521 [full_name] => Nilesh chauhan [monthly_rental] => 1

如果
月份
全名
在一个数组中相同,我需要
月租
arc
的总和

输入阵列

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 15000
                    [arc] => 180000
                    [month] => 1
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 14166.666666667
                    [arc] => 170000
                    [month] => 2
                )

            [1] => Array
                (
                    [id] => 589
                    [full_name] => Gajanan satpute
                    [monthly_rental] => 14166.666666667
                    [arc] => 170000
                    [month] => 2
                )

            [2] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 13333.333333333
                    [arc] => 160000
                    [month] => 2
                )

            [3] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 11250
                    [arc] => 135000
                    [month] => 2
                )

            [4] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 7500
                    [arc] => 90000
                    [month] => 2
                )

            [5] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 7000
                    [arc] => 84000
                    [month] => 2
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 35833.333333333
                    [arc] => 430000
                    [month] => 3
                )

            [1] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 14166.666666667
                    [arc] => 170000
                    [month] => 3
                )

            [2] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 13333.333333333
                    [arc] => 160000
                    [month] => 3
                )

            [3] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 8750
                    [arc] => 105000
                    [month] => 3
                )

            [4] => Array
                (
                    [id] => 589
                    [full_name] => Gajanan satpute
                    [monthly_rental] => 7500
                    [arc] => 90000
                    [month] => 3
                )

            [5] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 6493.3333333333
                    [arc] => 77920
                    [month] => 3
                )
        )
)
第1和第2个索引中有6个子数组,我想要
0,1,5(Ritesh Shah,第2个月)
数组的总和,并使它们唯一。和此相同,我有一个很长的数组列表,但如果你们中的任何人向我建议如何获得这个数组的和值,我将管理它们

我想要的输出:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 15000
                    [arc] => 180000
                    [month] => 1
                )

        )
        [1] => Array
        (
            [0] => Array
                (
                    [id] => 1549
                    [full_name] => Ritesh shah
                    [monthly_rental] => 32416.66
                    [arc] => 389000
                    [month] => 2
                )

            [1] => Array
                (
                    [id] => 589
                    [full_name] => Gajanan satpute
                    [monthly_rental] => 14166.666666667
                    [arc] => 170000
                    [month] => 2
                )

            [2] => Array
                (
                    [id] => 521
                    [full_name] => Nilesh chauhan
                    [monthly_rental] => 20833.33
                    [arc] => 250000
                    [month] => 2
                )

        )
...

您可以应用此函数并检索预期输出:

function getCustomMonoRecords($data){

    $res = [];

    foreach($data as $m=>$ar){
        $res[$m] = [];   
        $tmp = []; 
        $i = 0;
        foreach($ar as $ind=>$rec){
            if(!array_key_exists($rec['id'],$tmp)) {
                $tmp[$rec['id']] = $i;  
                $res[$m][$i] = $rec;
                $i++;
            } else {
                $in = $tmp[$rec['id']];
                $res[$m][$in]['monthly_rental'] += $rec['monthly_rental'];
                $res[$m][$in]['arc'] += $rec['arc'];
            }
        } 
    }
    return $res;
}

或者有点不同:

function getCustomMonoRecords2($data){

    $res = [];

    foreach($data as $m=>$ar){
        $res[$m] = [];     
        foreach($ar as $ind=>$rec){ 
            if(!isset($res[$m][$rec['id']])){
                $res[$m][$rec['id']] = $rec;
            } else {
                $res[$m][$rec['id']]['monthly_rental'] += $rec['monthly_rental'];
                $res[$m][$rec['id']]['arc'] += $rec['arc'];
            } 
        } 
        $res[$m] = array_values($res[$m]);
    } 
    return $res;
}

您可以应用此函数并检索预期输出:

function getCustomMonoRecords($data){

    $res = [];

    foreach($data as $m=>$ar){
        $res[$m] = [];   
        $tmp = []; 
        $i = 0;
        foreach($ar as $ind=>$rec){
            if(!array_key_exists($rec['id'],$tmp)) {
                $tmp[$rec['id']] = $i;  
                $res[$m][$i] = $rec;
                $i++;
            } else {
                $in = $tmp[$rec['id']];
                $res[$m][$in]['monthly_rental'] += $rec['monthly_rental'];
                $res[$m][$in]['arc'] += $rec['arc'];
            }
        } 
    }
    return $res;
}

或者有点不同:

function getCustomMonoRecords2($data){

    $res = [];

    foreach($data as $m=>$ar){
        $res[$m] = [];     
        foreach($ar as $ind=>$rec){ 
            if(!isset($res[$m][$rec['id']])){
                $res[$m][$rec['id']] = $rec;
            } else {
                $res[$m][$rec['id']]['monthly_rental'] += $rec['monthly_rental'];
                $res[$m][$rec['id']]['arc'] += $rec['arc'];
            } 
        } 
        $res[$m] = array_values($res[$m]);
    } 
    return $res;
}

这是否回答了您的问题?不,在这里,我有一个不同的名字,当我使用你建议的问题逻辑时,它给出了我不想要的所有值的总和。请阅读。你应该向我们展示你已经尝试过的东西,并解释到底是什么问题。这不是一个代码编写服务。@04FS先生,我用了我的后半段时间来解决这个问题,这不是你所想的。那么请展示你所做的尝试!否则我不知道我们该怎么做,只是假装而已。这能回答你的问题吗?不,在这里,我有一个不同的名字,当我使用你建议的问题逻辑时,它给出了我不想要的所有值的总和。请阅读。你应该向我们展示你已经尝试过的东西,并解释到底是什么问题。这不是一个代码编写服务。@04FS先生,我用了我的后半段时间来解决这个问题,这不是你所想的。那么请展示你所做的尝试!否则我不知道我们该怎么做,只是假装而已。谢谢你,先生,两个功能都很好。谢谢你,先生,这两个功能都很完美。