检查数组中的时间与时间之间是否存在冲突

时间:2017-05-26 16:20:34

标签: php

我想检查时间(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'));
    }

我需要你的建议,谢谢你。

0 个答案:

没有答案