在 PHP 中检查连续几天

  • 本文关键字:几天 连续 PHP php date
  • 更新时间 :
  • 英文 :


我有这段代码来检查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);

最新更新