PHP Function To Turn Integer To Roman Numerals

22nd April 2008 - 2 minutes read time

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).'
'; echo integerToRoman(42).'
'; echo integerToRoman(123).'
'; echo integerToRoman(4576).'
'; echo integerToRoman(1979).'
';

This will print out the following.

I
XLII
CXXIII
MMMMDLXXVI
MCMLXXIX

You can also give the function a string.

echo integerToRoman('765').'
';

Will print out DCCLXV.

Comments

Permalink
Nice work.....Thanks

Aminu Abdulsalami (Sun, 03/17/2013 - 10:56)

Permalink
Nice work! I asked the internet and lo, there you were.

Chris Pink (Tue, 12/12/2017 - 13:37)

Permalink

Hey thanks for this man!

Marc Crosthwaite (Sun, 09/01/2019 - 16:15)

Add new comment

The content of this field is kept private and will not be shown publicly.