PHP Function To Turn Integer To Roman Numerals

Use the following function to change any integer into a string containing the integer value as a Roman Numeral.

function integerToRoman($integer)
{
 // Convert the integer into an integer (just to make sure)
 $integer = intval($integer);
 $result = '';
 
 // Create a lookup array that contains all of the Roman numerals.
 $lookup = 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);
 
 foreach($lookup as $roman => $value){
  // Determine the number of matches
  $matches = intval($integer/$value);
 
  // Add the same number of characters to the string
  $result .= str_repeat($roman,$matches);
 
  // Set the integer to be the remainder of the integer and the value
  $integer = $integer % $value;
 }
 
 // The Roman numeral should be built, return it
 return $result;
}

To run the code just give the function an integer. Here are some examples.

echo integerToRoman(1).'<br>';
echo integerToRoman(42).'<br>';
echo integerToRoman(123).'<br>';
echo integerToRoman(4576).'<br>';
echo integerToRoman(1979).'<br>';

This will print out the following.

I
XLII
CXXIII
MMMMDLXXVI
MCMLXXIX

You can also give the function a string.

echo integerToRoman('765').'<br>';

Will print out DCCLXV.

Comments

Nice work.....Thanks
Permalink
Nice work! I asked the internet and lo, there you were.
Permalink
Thanks! I'm really happy you found it useful :)
Name
Philip Norton
Permalink

Hey thanks for this man!

Permalink

Add new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
1 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.