3v4l.org

run code in 300+ PHP versions simultaneously
<?php $vacancies = [ '2024-01-01 09:00:00' => 'booked', '2024-01-01 09:10:00' => 'booked', '2024-01-01 09:20:00' => 'booked', '2024-01-01 09:30:00' => 'booked', '2024-01-01 09:40:00' => 'booked', '2024-01-01 09:50:00' => 'booked', '2024-01-01 10:00:00' => null, '2024-01-01 10:10:00' => null, '2024-01-01 10:20:00' => null, '2024-01-01 10:30:00' => null, '2024-01-01 10:40:00' => null, '2024-01-01 10:50:00' => null, '2024-01-01 11:00:00' => null, '2024-01-01 11:10:00' => null, '2024-01-01 11:20:00' => null, '2024-01-01 11:30:00' => null, '2024-01-01 11:40:00' => null, '2024-01-01 11:50:00' => null, '2024-01-01 12:00:00' => null, '2024-01-01 12:10:00' => null, '2024-01-01 12:20:00' => null, '2024-01-01 12:30:00' => null, '2024-01-01 12:40:00' => null, '2024-01-01 12:50:00' => null, '2024-01-01 13:00:00' => null, '2024-01-01 13:10:00' => null, '2024-01-01 13:20:00' => null, '2024-01-01 13:30:00' => null, '2024-01-01 13:40:00' => null, '2024-01-01 13:50:00' => null, '2024-01-01 14:00:00' => null, '2024-01-01 14:10:00' => null, '2024-01-01 14:20:00' => null, '2024-01-01 14:30:00' => null, '2024-01-01 14:40:00' => null, '2024-01-01 14:50:00' => null, '2024-01-01 15:00:00' => null, '2024-01-01 15:10:00' => null, '2024-01-01 15:20:00' => null, '2024-01-01 15:30:00' => null, '2024-01-01 15:40:00' => null, '2024-01-01 15:50:00' => null, '2024-01-01 16:00:00' => 'booked', '2024-01-01 16:10:00' => 'booked', '2024-01-01 16:20:00' => 'booked', '2024-01-01 16:30:00' => 'booked', '2024-01-01 16:40:00' => 'booked', '2024-01-01 16:50:00' => null, '2024-01-01 17:00:00' => null, '2024-01-01 17:10:00' => null, '2024-01-01 17:20:00' => null, '2024-01-01 17:30:00' => null, '2024-01-01 17:40:00' => null, '2024-01-01 17:50:00' => null, ]; $newTests = [ '2024-01-01 09:50:00', '2024-01-01 10:00:00', '2024-01-01 15:40:00', '2024-01-01 17:40:00', ]; function is30MinuteSessionVacant(array $vacancies, string $dateTime): bool { for ($addMinutes = 0; $addMinutes < 30; $addMinutes += 10) { $dateTime = date('Y-m-d H:i:s', strtotime("$dateTime +{$addMinutes} minutes")); if (!key_exists($dateTime, $vacancies)) { throw new Exception('Proposed time is not within business hours'); } if ($vacancies[$dateTime] !== null) { return false; } } return true; } foreach ($newTests as $test) { echo "\n$test: "; try { echo is30MinuteSessionVacant($vacancies, $test) ? 'available' : 'unavailable'; } catch (Exception $e) { echo $e->getMessage(); } }

preferences:
26.79 ms | 406 KiB | 5 Q