我在不眠之夜苦苦挣扎,却不知道该怎么做或找不到好的榜样。
我有一个包含日期的php数组,可以说dateArray
,数组中的日期可以按顺序排列,也可以不按顺序排列,并且数组中日期元素的数量因情况而异。
我想从dateArray
中创建一个新的数组数组,其中将包含所有可能的日期范围,这些日期范围应该由日期序列顺序构建。
例如,如果我的dateArray
包含元素(dd-mm-yy)
2018-01-01,2018-01-02,2018-01-03,2018-01-05,2018-01-06
我期望的新闻数组应该具有以下结果。
0 ==> 2018-01-01,2018-01-03/
1 ==> 2018-01-05,2018-01-06
答案 0 :(得分:2)
尝试使用此函数,它接受dates数组作为参数,它将返回日期数组中的日期范围,请注意返回值是一个数组,
function getDateRangeSplitted($dates)
{
sort($dates);
$startDate = $dates[0];
$finishDate = array_pop($dates);
// walk through the dates, breaking at gaps
foreach ($dates as $key => $date)
if (($key > 0) && (strtotime($date)-strtotime($dates[$key-1]) > 99999)) {
$result[] = array($startDate,$dates[$key-1]);
$startDate = $date;
}
// force the end
$result[] = array($startDate,$finishDate);
return $result;
}