微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP-根据日期值计算平均值

我有一个带有日期和评分的数组.摘录如下

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];
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐