3v4l.org

run code in 300+ PHP versions simultaneously
<?php function numberToRoman(int $integer): string { static $conversions = [ 1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD', 100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL', 10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV', 1 => 'I' ]; $romanString = ''; foreach ($conversions as $int => $roman) { echo "\tcheck $roman\n"; while ($integer >= $int) { echo "\tsubtract $int\n"; $romanString .= $roman; if (!($integer -= $int)) { break 2; } } } return $romanString; } echo numberToRoman(3333); echo "\n---\n"; echo numberToRoman(5000); echo "\n======\n"; function numberToRomanRepresentation($number) { $map = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400, 'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40, 'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1); $returnValue = ''; while ($number > 0) { foreach ($map as $roman => $int) { echo "\tcheck $roman\n"; if($number >= $int) { echo "\tsubtract $int\n"; $number -= $int; $returnValue .= $roman; break; } } } return $returnValue; } echo numberToRomanRepresentation(3333); echo "\n---\n"; echo numberToRomanRepresentation(5000);
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
check M subtract 1000 subtract 1000 subtract 1000 check CM check D check CD check C subtract 100 subtract 100 subtract 100 check XC check L check XL check X subtract 10 subtract 10 subtract 10 check IX check V check IV check I subtract 1 subtract 1 subtract 1 MMMCCCXXXIII --- check M subtract 1000 subtract 1000 subtract 1000 subtract 1000 subtract 1000 MMMMM ====== check M subtract 1000 check M subtract 1000 check M subtract 1000 check M check CM check D check CD check C subtract 100 check M check CM check D check CD check C subtract 100 check M check CM check D check CD check C subtract 100 check M check CM check D check CD check C check XC check L check XL check X subtract 10 check M check CM check D check CD check C check XC check L check XL check X subtract 10 check M check CM check D check CD check C check XC check L check XL check X subtract 10 check M check CM check D check CD check C check XC check L check XL check X check IX check V check IV check I subtract 1 check M check CM check D check CD check C check XC check L check XL check X check IX check V check IV check I subtract 1 check M check CM check D check CD check C check XC check L check XL check X check IX check V check IV check I subtract 1 MMMCCCXXXIII --- check M subtract 1000 check M subtract 1000 check M subtract 1000 check M subtract 1000 check M subtract 1000 MMMMM

preferences:
151.62 ms | 405 KiB | 123 Q