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
Hey thanks for this man!