PHP日历阻止一些不可用的日期

PHP日历阻止一些不可用的日期,php,html,css,Php,Html,Css,我正在为一个小小的预订系统设计一个小小的PHP日历。最后一个特性是阻止一些不可用的日期,这些日期我已经存储在PHP数组中。实现这一目标的最佳方式是什么?请告诉我如何做这件事需要一些建议。谢谢 // Set your timezone!! date_default_timezone_set('Europe/Madrid'); // Get prev & next month if (isset($_GET['ym'])) { $ym = $_GET['ym']; } else {

我正在为一个小小的预订系统设计一个小小的PHP日历。最后一个特性是阻止一些不可用的日期,这些日期我已经存储在PHP数组中。实现这一目标的最佳方式是什么?请告诉我如何做这件事需要一些建议。谢谢

// Set your timezone!!
date_default_timezone_set('Europe/Madrid');

// Get prev & next month
if (isset($_GET['ym'])) {
    $ym = $_GET['ym'];
} else {
    // This month
    $ym = date('Y-m');
}

// Check format
$timestamp = strtotime($ym . '-01');  // the first day of the month
if ($timestamp === false) {
    $ym = date('Y-m');
    $timestamp = strtotime($ym . '-01');
}

// Today (Format:2018-08-8)
$today = date('Y-m-j');

// Title (Format:August, 2018)
$title = date('F, Y', $timestamp);

// Create prev & next month link
$prev = date('Y-m', strtotime('-1 month', $timestamp));
$next = date('Y-m', strtotime('+1 month', $timestamp));

// Number of days in the month
$day_count = date('t', $timestamp);

// 1:Mon 2:Tue 3: Wed ... 7:Sun
$str = date('N', $timestamp);

// Array for calendar
$weeks = [];
$week = '';

// Add empty cell(s)
$week .= str_repeat('<td></td>', $str - 1);

for ($day = 1; $day <= $day_count; $day++, $str++) {

    $date = $ym . '-' . $day;

    if ($today == $date) {
        $week .= '<td class="today">';
    } else {
        $week .= '<td>';
    }
    $week .= $day . '</td>';

    // Sunday OR last day of the month
    if ($str % 7 == 0 || $day == $day_count) {

        // last day of the month
        if ($day == $day_count && $str % 7 != 0) {
            // Add empty cell(s)
            $week .= str_repeat('<td></td>', 7 - $str % 7);
        }

        $weeks[] = '<tr>' . $week . '</tr>';

        $week = '';
    }
}

//设置您的时区!!
日期默认时区设置(“欧洲/马德里”);
//获取上一个月和下个月
如果(isset($_GET['ym'])){
$ym=$_GET['ym'];
}否则{
//这个月
$ym=日期('Y-m');
}
//检查格式
$timestamp=strottime($ym.'-01');//月初一
如果($timestamp==false){
$ym=日期('Y-m');
$timestamp=strottime($ym.-01');
}
//今天(格式:2018-08-8)
$today=日期('Y-m-j');
//标题(格式:2018年8月)
$title=日期('F,Y',$timestamp);
//创建上个月和下个月链接
$prev=日期('Y-m',标准时间('-1个月',$timestamp));
$next=日期('Y-m',标准时间('+1个月',$timestamp));
//当月天数
$day_count=日期('t',$timestamp);
//1:Mon 2:Tue 3:Wed。。。7:太阳
$str=日期('N',$timestamp);
//日历数组
$weeks=[];
$week='';
//添加空单元格
$week.=str_重复(“”,$str-1);
对于($day=1;$day)
对于您输出的每个
,检查其日期是否在您的不可用日期列表中,并输出一个类名,以便您可以使用CSS将其作为目标

更改此代码:

if ($today == $date) {
    $week .= '<td class="today">';
} else {
    $week .= '<td>';
}
$week .= $day . '</td>';
if($today==$date){
$week.='';
}否则{
$week.='';
}
$week.=$day.';
为此:

$classes = []; // assume
if ( in_array( $date, $unavailable_dates ) ) {
    $classes[] = 'unavailable';
}

if ($today == $date) {
    $classes[] = 'today';
}

$week .= '<td class="' . join(' ', $classes ) . '"></td>';
$classes=[];//假设
if(在数组中($date,$unavailable\u dates)){
$classes[]=“不可用”;
}
如果($today==$date){
$classes[]=“今天”;
}
$week.='';
这假设不可用日期数组存储在
$unavailable\u dates
中,例如
['2020-08-10','2020-08-12','2020-08-17']

$classes = []; // assume
if ( in_array( $date, $unavailable_dates ) ) {
    $classes[] = 'unavailable';
}

if ($today == $date) {
    $classes[] = 'today';
}

$week .= '<td class="' . join(' ', $classes ) . '"></td>';