-
-
Save hachesilva/78a6f5a474c8e8ff7ef7e5917cb5fc7f to your computer and use it in GitHub Desktop.
How to convert integer to Roman number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Converts integer to Roman. | |
* | |
* @param int $integer | |
* Integer to be converted to Roman string. | |
* | |
* @return string | |
*/ | |
public 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 = [ | |
'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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment