составление графика заданных минут с использованием времени начала и окончания

Я работаю над проектом назначения бронирования. Используя время начала и время окончания из расписания. Я хочу делать временные интервалы, как показано ниже, для каждого дня, избегая забронированных слотов.

"availableSlots": [
{
"start": "10:30",
"stop": "11:00"},
{
"start": "11:00",
"stop": "11:30"},
{
"start": "11:30",
"stop": "12:00"},
{
"start": "12:00",
"stop": "12:30"},
{
"start": "12:30",
"stop": "13:00"},
{
"start": "13:00",
"stop": "13:30"},
{
"start": "13:30",
"stop": "14:00"},
{
"start": "14:00",
"stop": "14:30"},
{
"start": "14:30",
"stop": "15:00"},
{
"start": "15:00",
"stop": "15:30"}]

Я попробовал код, как показано ниже, используя эту ссылку Раздел 20-минутный интервал времени в php от времени начала и окончания

Public function availableTimeSlots($start_time, $end_time, $bookedSlots, $timePerSlot) {

$start = DateTime::createFromFormat('Y-m-d H:i:s', $start_time);//createdate time objects
$end = DateTime::createFromFormat('Y-m-d H:i:s', $end_time);  //create date time objects
$count = 0;  //number of slots
$out = array();   //array of slots
for ($i = $start; $i <= $end;) {  //for loop
$avoid = false;   //booked slot?
$time1 = $i->format('H:i');   //take hour and minute
$i->modify("+" . $timePerSlot . " minutes");      //add time per slot minutes
$time2 = $i->format('H:i');     //take hour and minute
$slot = $time1 . "-" . $time2;      //create a format 12:40-13:00 etc
for ($k = 0; $k < sizeof($bookedSlots); $k++) {  //if booked hour
if ($bookedSlots[$k] == $slot) {  //check
$avoid = true;   //yes. booked
}
}
if (!$avoid && $i <= $end) {  //if not booked and less than end time
$count++;           //add count
$slots = ['start' => $time1, 'stop' => $time2];         //add count
array_push($out, $slots); //add slot to array
}
}
return $out;

}

Выше код работает нормально, когда у меня забронированы слоты.
Но когда $ bookedSlots пусто, это означает, что ни один слот не зарезервирован на день, я должен показать все доступные слоты, но он возвращает пустой массив.
Кто-нибудь может помочь?

0

Решение

Где $i++ в вашем for() цикл?

// this
for ($i = $start; $i <= $end;) {  //for loop

// should be this
for ($i = $start; $i <= $end; $i++) {  //for loop
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]