3v4l.org

run code in 300+ PHP versions simultaneously
<?php define('DAYS', array_flip(['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'])); function condenseDays(string $days): string { $result = ''; foreach (explode(',', $days) as $day) { if (!$result) { $result .= $day; } elseif (DAYS[$day] === DAYS[$yesterday] + 1) { $result = str_replace("-$yesterday", '', $result) . "-$day"; } else { $result .= ",$day"; } $yesterday = $day; } return $result; } echo condenseDays('mon,tue,wed,thu,fri,sat') . "\n"; echo condenseDays('tue,thu,fri,sun') . "\n"; echo condenseDays('mon,tue,wed,fri,sat,sun') . "\n"; echo condenseDays('mon,thu,sun') . "\n"; echo condenseDays('tue,wed,fri,sat') . "\n"; echo condenseDays('mon,wed,fri,sun') . "\n"; echo condenseDays('mon,tue,thu,fri,sat,sun');
Output for 7.4.0 - 7.4.33, 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
mon-sat tue,thu-fri,sun mon-wed,fri-sun mon,thu,sun tue-wed,fri-sat mon,wed,fri,sun mon-tue,thu-sun

preferences:
110.95 ms | 407 KiB | 5 Q