Php 多数组求和时如何计算平均值

Php 多数组求和时如何计算平均值,php,arrays,foreach,Php,Arrays,Foreach,我已经有了一个和子数组求和的函数,它和这样的键匹配 $totals = array(); $count_loops = 0 ; // First get our totals. foreach ($average as $subKey => $subArray) { foreach ($subArray as $k => $v) { // Add the column to our total.

我已经有了一个和子数组求和的函数,它和这样的键匹配

 $totals = array();
 $count_loops = 0 ; 
    // First get our totals.
        foreach ($average as $subKey => $subArray) {
            foreach ($subArray as $k => $v) {
                // Add the column to our total.
                $totals[$k] = isset($totals[$k] ) ? $totals[$k] + $v / $count_loops : $v;
            }
        }
然后像这样返回总数组

Array
(
    [john_total] => 519.44
    [adam_total] => 1664.64
    [sara_total] => 1237.53
}
但我想在求和后返回平均值,但它返回了错误的平均值。如果我删除此代码
/$count\u循环
这很好。那么如何做到这一点呢?我想您可以在PHP中使用:和函数:

$totals = array();
 $count_loops = 0 ; 
    // First get our totals.
        foreach ($average as $subKey => $subArray) {
            $totals[$k] = array_sum($subArray) / count($subArray);
        }

通过使用
array\u sum
count

数组_sum将给出总结果的和

count将给出元素的总数

平均值是一组数字的计算“中心”值

所以


请注意在代码的这一点上将要进行的计算

$totals[$k] = isset($totals[$k] ) ? $totals[$k] + $v / $count_loops : $v;
我宁愿你把它当礼物

$totals[$k] = isset($totals[$k] ) ? ( $totals[$k] + $v ) / $count_loops : $v;
(5+2.5)/2=>7.5/2=3.75

5+(2.5/2)=>5+1.25=6.25


这些计算是相同的数字,但取决于运算符优先级。请参见

我希望它像这个数组一样返回([john_total]=>519.44[adam_total]=>1664.64[sara_total]=>1237.53}但是通过平均计算,我想单独计算每个值jon可能重复3次,但sara可能是这个数组的2倍([john_total]=>519.44[adam_total]=>1664.64[sara_total]=>1237.53}但除以2..数字2是jon或sara或任何人的重复数..因为平均数是总数/计数所以jon将是259.72您是否首先查看运算符优先级以了解其工作原理?您可能会看到您的代码在实际执行B时作为a工作。代码输出给出了您的确切信息你已经写了。也修改你的函数,看看它是否解决了,然后我们继续。$count_循环的问题。它必须计算所有重复的值,然后进行除法,但这不会发生,因为在第一个循环中,数字以数字1开头,所以他用错误的数字除法
$totals[$k] = isset($totals[$k] ) ? ( $totals[$k] + $v ) / $count_loops : $v;