php - 如何跳过数组的日期并将日期增加+1?

标签 php mysql arrays date

我使用 PHP 在下面编写了几行代码,我尝试通过获取天数并按天数递增日期来在 for 循环中传递日期,例如:我有 09-12-2015 并且没有天是 3 那么我将得到输出为 09-12-2015,10-12-2015,11-12-2015。接下来我使用其他条件,如果 $holidy_dates 数组中已经存在日期,我需要按日期递增。

$need_leave_date = "09-12-2015";     
$no_day = 6;
$holidy_dates = array('2015-12-11','2015-12-13');

$dates=array();  
for($i = 1; $i<$no_day; $i++)
{

    $leave_dates     =  date('Y-m-d', strtotime("+1 day", strtotime($leave_dates)));

    if($holidates_dates[$i] == $leave_dates) {
            $leave_dates     =  date('Y-m-d', strtotime("+1 day", strtotime($leave_dates)));
          //array_push($dates,$leave_dates);


    }
    else {       
        array_push($dates,$leave_dates);
        //  continue;
    }       


}


   //IMPLODE ALL THE DATES
   $implode_dates = implode(',', $dates); 
   echo $implode_dates;

我需要的例子:

  09-12-2015,10-12-2015,12-12-2015,14-12-2015,15-12-2015,16-12-2015

此处 $holidy_dates 数组中的可用日期将被跳过。

但对我来说是这样的:

  2015-12-10,2015-12-11,2015-12-12,2015-12-13,2015-12-14

最佳答案

在这里它会起作用:

$need_leave_date = "09-12-2015";     
$no_day = 6;
$holidy_dates = array('2015-12-11','2015-12-13');
$dates=array();  
$i = $no_day;
$date = date( 'Y-m-d', strtotime($need_leave_date) );
while ( $i != 0 )
{
    if( !in_array( $date, $holidy_dates  ) ) {
        array_push($dates,$date);
        $i--;
    }
    $date = date( 'Y-m-d', strtotime($date . '+1 day') );
}

$implode_dates = implode(',', $dates);

echo $implode_dates;

对于多维数组:

$need_leave_date = "09-12-2015";     
$no_day = 6;
$holidy_dates = array(
                array( 'gh_date' => "2015-12-11"), 
                array( 'gh_date'=> "2015-12-13")
            );
$dates=array();  
$i = $no_day;
$date = date( 'Y-m-d', strtotime($need_leave_date) );
while ( $i != 0 )
{
    if( !in_array_r( $date, $holidy_dates  ) ) {
        array_push($dates,$date);
        $i--;
    }
    $date = date( 'Y-m-d', strtotime($date . '+1 day') );
}

$implode_dates = implode(',', $dates);

echo $implode_dates;

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}

关于php - 如何跳过数组的日期并将日期增加+1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447314/

相关文章:

javascript - Angular ng-repeat 反向

php - 将 PHP 变量转换为 bash 变量

javascript - 在头文件顶部导航中使用 AJAX Search Lite 插件 - WordPress

php - 在 PHP 中搜索数据库

php - 使用php从数据库检索数据到android

mysql - 对复合主键执行命令

php - 避免跨越重量范围 BETWEEN,两列?数据库

php - Laravel 迁移部署

java - 从java中的文本文件填充二维数组(抛出NoSuchElementException)

javascript - 对数组进行排序并传递它后,React 钩子(Hook) useState/setState 不起作用