function getFreeInterval($intervals, $startTime, $endTime)
{
$result = [];
$ok = false;
foreach($intervals as $key => $interval){
list($start, $end) = explode('-', $interval);
if ($startTime >= $start && $endTime <= $end) {
$ok = true;
if ($startTime > $start) {
$result[] = "{$start}-{$startTime}";
}
if ($endTime < $end) {
$result[] = "{$endTime}-{$end}";
}
} else {
$result[] = $interval;
}
}
return [
$ok,
$result
];
}
$intervals = [
'09:30:00-13:15:00',
'14:00:00-17:00:00'
];
list($ok, $result) = getFreeInterval($intervals, '09:30:00', '10:15:00');
var_dump($ok, $result);
// bool(true)
// array(2) {
// [0]=> string(17) "10:15:00-13:15:00"
// [1]=> string(17) "14:00:00-17:00:00"
// }