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, ]; /** * @return string|null */ public static function formatRoman($number) { if($number === null) { return null; } if(!is_int($number)) { throw new \InvalidArgumentException('expected integer'); } $roman_number = ''; while($number > 0) { foreach(self::$roman_symbols as $roman_digit => $roman_digit_value) { if($number >= $roman_digit_value) { $roman_number .= $roman_digit; $number -= $roman_digit_value; break; } } } return $roman_number; } }