3v4l.org

run code in 500+ PHP versions simultaneously
<?php $chars = ['A','B','C','F','a','b','c','d','e','f','h','i','j','k','l','o','q','!','?','0','2','3','4','9']; $result = []; $range = [null]; foreach ($chars as $char) { if ($range[0] === null) { $range = [$char]; } elseif (ord($range[1] ?? $range[0]) === ord($char) - 1) { $range[1] = $char; } else { $result[] = implode('-', $range); $range = [$char]; } } if ($range[0] !== null) { $result[] = implode('-', $range); } var_export($result);
Output for 7.4.0 - 7.4.33, 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.21, 8.5.0 - 8.5.7
array ( 0 => 'A-C', 1 => 'F', 2 => 'a-f', 3 => 'h-l', 4 => 'o', 5 => 'q', 6 => '!', 7 => '?', 8 => '0', 9 => '2-4', 10 => '9', )

preferences:
88.23 ms | 1278 KiB | 4 Q