3v4l.org

run code in 300+ PHP versions simultaneously
<?php $overlaps = []; foreach ($intervals as $interval) { $key = null; foreach ($overlaps as $_key => $_intervals) { foreach ($_intervals as $_interval) { if ( ($_interval['from_time'] <= $interval['from_time'] && $interval['from_time'] <= $_interval['to_time']) || ($_interval['from_time'] <= $interval['to_time'] && $interval['to_time'] <= $_interval['to_time']) ) { $key = $_key; break 2; } } } if (is_null($key)) { $key = count($overlaps); } $overlaps[$key][] = $interval; } foreach ($overlaps as &$overlap) { $from = '00:00'; $to = '23:59'; foreach ($overlap as $_interval) { $from = max($from, $_interval['from_time']); $to = min($to, $_interval['to_time']); } $overlap = ['from_time' => $from, 'to_time' => $to]; } unset($overlap); print_r($overlaps);

preferences:
31.59 ms | 402 KiB | 5 Q