Разобрав все временные диапазоны на дефисы, вы можете вручную соединить время открытия / закрытия.
Мое решение может быть или не быть достаточно надежным для данных вашего проекта.Мое решение не выполняет проверку, не сортирует закрытые промежутки и не проверяет, соответствует ли промежуток времени открытия / закрытия ИЛИ превышает время открытия / закрытия.Мой фрагмент сильно зависит от достоверных данных.
Код: ( Демо )
$openinghours = ['09:00-18:00'];
$closed[] = '11:30-12:15';
$closed[] = '16:00-16:30';
[$start, $end] = explode('-', $openinghours[0]);
foreach ($closed as $span) {
[$shut, $reopen] = explode('-', $span);
$result[] = $start . '-' . $shut;
$start = $reopen;
}
$result[] = $start . '-' . $end;
var_export($result);
Вывод:
array (
0 => '09:00-11:30',
1 => '12:15-16:00',
2 => '16:30-18:00',
)
Если ваша версия php не поддерживает деструктуризацию массива, вы можетезвоните list()
с explode()
.