我有一个数组,例如
//$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 月
实例。因此,我需要获取这些 31
、31
和 25
值,以便我可以将一个月除以该数字。
我认为必须在 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/