我有一个数组,比如
//$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个December 2012
实例、31个November 2012
实例和25个October 2012
实例。因此,我需要掌握这些31
、31
和25
的值,这样我就可以用这个数字除以一个月。
我认为必须在if(isset($abc[$month]))
循环中做一些事情才能捕获,但到目前为止还没有成功。有其他方法可以得到平均值吗?
附言:为了便于比较,我不能硬编码月份的名称(十月、十一月、十二月(。它们定期更换。
$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);
}
试试这个:
$your_array = array(array("December 2012" => 58),
array("December 2012" => 58)
);
$res = array();
foreach($your_array as $val){
$res[key($val)][] = $val[key($val)];
}
foreach($res as $k=>&$v){
$v = array_sum($v)/count($v);
}
echo "<pre>";
print_r($res);