array(111) {
[0]=>
array(2) {
["date"]=>
string(19) "2018-03-03 17:15:42"
["rating"]=>
int(3)
}
[1]=>
array(2) {
["date"]=>
string(19) "2018-02-24 09:56:03"
["rating"]=>
int(1)
}
[2]=>
array(2) {
["date"]=>
string(19) "2018-02-22 12:46:44"
["rating"]=>
int(5)
}
}
我想做的是计算每个月的平均评分.此刻,我正在尝试这样
foreach($row as $val){
$result[substr($val['date'],0,7)] += $val['rating'];
}
显然,目前这只是将每个月的值相加,然后需要除以每个月的行数.我不太确定该怎么做.我也不确定我在上面所做的事情是否是实现我所追求的最好方法.
Notice: Undefined index: 2012-05
但是在所有这些通知之后,它确实输出了每个月的计数.为什么我会收到这些通知?
谢谢
解决方法:
如user3720435所述,在添加任何内容之前,您需要将总和初始化为零.然后,您仍然需要除以每月的收视次数才能获得平均值.这可以通过添加另一个跟踪这些计数的地图来实现.
foreach ($row as $val) {
$key = substr($val['date'], 0, 7);
if (!array_key_exists($key, $result)) {
$result[$key] = 0;
$count[$key] = 0;
}
$result[$key] += $val['rating'];
$count[$key]++;
}
foreach ($row as $val) {
$key = substr($val['date'], 0, 7);
$result[$key] /= $count[$key];
}