dsa88885555 2017-10-10 07:00
浏览 65
已采纳

php计算每10个数组元素的总数

Array ( 
    [0] => Array ( 
        [amount_paid] => 2050.00 
    )
    [1] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [2] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [3] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [4] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [5] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [6] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [7] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [8] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [9] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [10] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [11] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [12] => Array ( 
        [amount_paid] => 2050.00 
    ) 
    [13] => Array ( 
        [amount_paid] => 2050.00 
    ) 

) 

I have this example of array in php. I want to sum up every 10 paid amount.

Example is sum index 0-9 , 10 - 19 and so on

What I tried is only for first 10 and I cant think how to handle for every 10 with dynamic number

for ($i = 0; $i < count($json); $i++) {
    if ($i < 10) {
        $subtotalamount += floatval($json[$i]['amount_paid']);
    }
}
  • 写回答

5条回答 默认 最新

  • douyu9159 2017-10-10 07:12
    关注

    Short solution with range, array_slice and array_column functions:

    // $arr is your initial array
    $sub_totals = [];
    foreach(range(0, count($arr), 10) as $k){
        $sub_totals[] = array_sum(array_column(array_slice($arr, $k, 10), 'amount_paid'));
    }
    

    • range(0, count($arr), 10) - generate an array containing a range of elements. It would be as [0, 10, 20]. Those elements are boundaries for each 10-sized sequence

    • array_slice($arr, $k, 10) - each next boundary $k is used for extracting next 10-sized sequence/slice from the initial array $arr

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?