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.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
1-3,6,8-9 2,4-6,8,10

preferences:
76.22 ms | 1100 KiB | 4 Q