我有这段代码来检查PHP中的连续日期:
$dates = "2017-02-26, 2017-02-27, 2017-03-01";
$dates = explode(',', $dates);
$conseq = array();
$ii = 0;
$max = count($dates);
for($i = 0; $i < count($dates); $i++) {
$conseq[$ii][] = date('Y-m-d',$dates[$i]);
if($i + 1 < $max) {
$dif = $dates[$i + 1] - $dates[$i];
if($dif >= 90000) {
$ii++;
}
}
}
print_r($dates);
问题是这段代码不能使工作达到 100%。
它应该创建一个具有连续天数的数组,并为每个单独的日期创建一个数组,如下所示:
Array (
[0] => 2017-02-26
[1] => 2017-02-27
)
Array (
[0] => 2017-03-01
)
请任何人帮助我。
谢谢。
请尝试以下答案
<?php
$dates = "2017-02-26, 2017-02-27, 2017-03-01";
$dates = explode(',', $dates);
$conseq = array();
$ii = 0;
$max = count($dates);
for($i = 0; $i < count($dates); $i++) {
$conseq[$ii][] = date('Y-m-d',strtotime($dates[$i]));
if($i + 1 < $max) {
$dif = strtotime($dates[$i + 1]) - strtotime($dates[$i]);
if($dif >= 90000) {
$ii++;
}
}
}
print_r($conseq);
?>
你可以把它放在foreach循环中,然后按月过滤数组值。
$dates = "2017-02-26, 2017-02-27, 2017-03-01";
$date_arr = explode(',', $dates);
$filter = array();
foreach( $date_arr as $date ){
$filter[date('m', strtotime($date))][] = $date;
}
echo '<pre>'; print_r($filter);