php - 求关联数组中相同键值的平均值

标签 php arrays associative-array average

我有一个数组,例如

//$ary, $ary contains some 80 entries, I'm showing only the first 10
Array
(
    [0] => Array
        (
            [December 2012] => 58
        )
    [1] => Array
        (
            [November 2012] => 84
        )
    [2] => Array
        (
            [December 2012] => 83
        )
    [3] => Array
        (
            [November 2012] => 72
        )
    [4] => Array
        (
            [November 2012] => 47
        )
    [5] => Array
        (
            [December 2012] => 93
        )
    [6] => Array
        (
            [November 2012] => 79
        )
    [7] => Array
        (
            [October 2012] => 70
        )
    [8] => Array
        (
            [November 2012] => 75
        )
    [9] => Array
        (
            [October 2012] => 59
        )
    [10] => Array
        (
            [December 2012] => 67
        )
)

我可以使用以下方法获取每个月的总计:

foreach($ary as $array)
{   
    foreach($array as $month=>$cent)
    {

        if(isset($abc[$month])) // prevent index warning
        {           
            $abc[$month] += $cent;
           // tried using $abc[$month] = $abc[$month]/2 but wrong values were returned
        }
        else
        {
            $abc[$month] = $cent;
        }
    }
}

这会导致

Array
(
    [December 2012] => 2195
    [November 2012] => 2159
    [October 2012] => 1631
)

但我无法找到找到每个月平均值的方法。就我而言,有 31 个 2012 年 12 月 实例、31 个 2012 年 11 月 实例和 25 个 2012 年 10 月 实例。因此,我需要获取这些 313125 值,以便我可以将一个月除以该数字。

我认为必须在 if(isset($abc[$month])) 循环内完成一些操作才能捕获,但到目前为止尚未成功。还有其他方法可以得到平均值吗?

PS:出于比较目的,我无法对月份名称(十月、十一月、十二月)进行硬编码。它们定期发生变化。

最佳答案

$eachMonth = array();
foreach($ary as $array)
{   
   foreach($array as $month=>$cent)
  {

    $eachMonth[$month][] = $cent;

    if(isset($abc[$month])) // prevent index warning
    {           
        $abc[$month] += $cent
    }
    else
    {
        $abc[$month] = $cent;
    }
  }
}

然后您可以计算每个月的平均值:

foreach( $eachMonth as $month => $values)
{
   echo $month.' : '.$abc[$month] / count($values);

}

关于php - 求关联数组中相同键值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542808/

相关文章:

c++ - 从具有多列整数的文件中读取并将它们放入数组中

PHP array_merge() 仅优先使用第一个数组和唯一值?

javascript - 有谁知道可以创建关联数组的 Javascript .csv 文件读取器?

javascript - 无法访问从axios请求到laravel上传的文件

php - 表单和 PHP 结果显示在同一页面上

c++ - 替换char数组中的字符c++

javascript - 将 javascript 数组中的值发送到表单值 html,将 html 值中的值发送到 php

javascript - 按每个数组中的一个值对一组关联数组进行排序

php - 如何检查特定用户是否登录 Laravel?

php - 如何为特定目录设置open_basedir