我想检查时间(H:i)开始 - 结束是否与数组中的时间冲突。 所以我从表预留中检索数据,并转换为数组:
$array = array(
array(
'start' => new DateTime('2017-05-06 10:30'),
'end' => new DateTime('2017-05-06 13:30'),
'executor' => 1 //team 1
),
array(
'start' => new DateTime('2017-05-06 09:30'),
'end' => new DateTime('2017-05-06 10:30'),
'executor' => 2 //team 2
),
array(
'start' => new DateTime('2017-05-06 12:30'),
'end' => new DateTime('2017-05-06 15:30'),
'executor' => 2 //team 2
),
array(
'start' => new DateTime('2017-05-06 13:00'),
'end' => new DateTime('2017-05-06 16:30'),
'executor' => 2 //team 2
)
);
让我们说,有新访客1尝试预订,他输入日期: 如果日期访问者输入与表中的数据之一折叠,那么系统必须给他一个警告"您选择的小时不可用"。如果没有任何东西崩溃,那么它将继续这个过程。
案例1,访客在预订时输入这个小时。
$start = new DateTime('2017-05-06 11:00');
$end = new DateTime('2017-05-06 14:00');
它应该发出警告,因为11:00-14:00与数组中的数据折叠。
案例2,访客在预订时输入这个小时。
$start = new DateTime('2017-05-06 11:00');
$end = new DateTime('2017-05-06 13:00');
正如我所料,它会发出警告。
我的问题是案例1,为什么它没有发出警告?
这里我们使用我用来检查的代码。
foreach ($array as $row) {
if (isBetween($start1, $end1, $row['start'], $row['end'])) {
echo 'Your selected hour is not available';
}
}
function isBetween(DateTime $to_check_start, DateTime $to_check_end, DateTime $start, DateTime $end) {
return ($to_check_start->format('H:i') >= $start->format('H:i') && $to_check_end->format('H:i') <= $end->format('H:i'));
}
我需要你的建议,谢谢你。