php-计算日期数组的平均间隔
我有一个日期数组php-计算日期数组的平均间隔,php,Php,我有一个日期数组 Array ( [0] => 2014-09-05 [1] => 2014-09-09 [2] => 2014-09-09 [3] => 2014-09-11 [4] => 2014-09-16 [5] => 2014-09-18 [6] => 2014-09-25 ) 看,这些日期之间的间隔大约是3天 如何自动计算此间隔?这应该适用于您: 只需循环浏览所有日期,并检查是否还有下
Array
(
[0] => 2014-09-05
[1] => 2014-09-09
[2] => 2014-09-09
[3] => 2014-09-11
[4] => 2014-09-16
[5] => 2014-09-18
[6] => 2014-09-25
)
看,这些日期之间的间隔大约是3天
如何自动计算此间隔?这应该适用于您: 只需循环浏览所有日期,并检查是否还有下一个日期。如果是,则减去两个时间戳并将其添加到$Interval数组中 最后,只需取时间间隔的平均值,以秒为单位,因此您可以将其除以3600*24,得到平均日间隔
<?php
$dates = [
"2014-09-05",
"2014-09-09",
"2014-09-09",
"2014-09-11",
"2014-09-16",
"2014-09-18",
"2014-09-25",
];
foreach($dates as $key => $date) {
if(isset($dates[($key+1)]))
$intervals[] = abs(strtotime($date) - strtotime($dates[($key+1)]));
}
$average = array_sum($intervals) / count($intervals);
echo $average / (3600 * 24);
?>
从输入的$dates数组生成两个日期之间存在差异的$difference\映射数组
然后按平均数计算
$average = array_sum($difference_map)/(count($difference_map)-1);
如果在此脚本中将显示的数组作为$dates,则$difference\u map将如下所示:
array (size=7)
0 => null
1 => string '+4' (length=2)
2 => string '+0' (length=2)
3 => string '+2' (length=2)
4 => string '+5' (length=2)
5 => string '+2' (length=2)
6 => string '+7' (length=2)
最后,$average将是
你试过什么吗?还没有。我不知道该怎么做,所以这个问题我们在哪里?
$difference_map = array_map(function($v, $k) use ($dates){
if($k == array_keys($dates)[0]) return;
$start = new DateTime($dates[$k-1]);
$end = new DateTime($dates[$k]);
$diff = $start->diff($end);
return $diff->format('%R').$diff->days;
}, $dates, array_keys($dates));
$average = array_sum($difference_map)/(count($difference_map)-1);
array (size=7)
0 => null
1 => string '+4' (length=2)
2 => string '+0' (length=2)
3 => string '+2' (length=2)
4 => string '+5' (length=2)
5 => string '+2' (length=2)
6 => string '+7' (length=2)
float 3.3333333333333