3v4l.org

run code in 300+ PHP versions simultaneously
<?php function hyphenatedRanges($numbers): string { $result = []; foreach ($numbers as $i => $number) { if (isset($ref) && $number === $numbers[$i - 1] + 1) { $ref = strtok($ref, "-") . "-$number"; } else { unset($ref); $ref = $number; $result[] = &$ref; } } return implode(',', $result); } echo hyphenatedRanges([1, 2, 3, 6, 8, 9]) . "\n"; // "1-3,6,8-9" echo hyphenatedRanges([2, 4, 5, 6, 8, 10]); // "2,4-6,8,10"
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
1-3,6,8-9 2,4-6,8,10

preferences:
100.41 ms | 406 KiB | 5 Q