3v4l.org

run code in 500+ PHP versions simultaneously
<?php $array = [ '2020-02-07' => ['09:00' => 1500, '10:30' => 1500, '11:00' => 1500, '11:30' => 0], '2020-02-08' => ['09:00' => 1500, '09:30' => 1500, '11:00' => 1500], ]; $result = []; foreach ($array as $k => $v) { $v = array_map(function($a) { return strtotime($a); }, array_keys($v)); for ($i = 0; $i < count($v); $i++) { $a = $v[$i]; $b = $a; while (isset($v[$i + 1]) && $v[$i + 1] - $v[$i] === 1800) { $b = $v[$i + 1]; $i++; } $range = $a == $b ? date('H:i', $a) : date('H:i', $a) .' - '. date('H:i', $b); $result[] = ['date' => $k, 'range' => $range]; } } print_r($result);

preferences:
102.5 ms | 2880 KiB | 5 Q