How to convert a Roman number to an integer in PHP

1 Answer

0 votes
class RomanToInteger
{
    private static $romanMap = [
        'I' => 1,
        'V' => 5,
        'X' => 10,
        'L' => 50,
        'C' => 100,
        'D' => 500,
        'M' => 1000
    ];

    public static function romanToInt(string $s): int
    {
        $total = 0;
        $prevValue = 0;

        // iterate backwards over the string
        for ($i = strlen($s) - 1; $i >= 0; $i--) {
            $currentValue = self::$romanMap[$s[$i]];
            if ($currentValue < $prevValue) {
                $total -= $currentValue;
            } else {
                $total += $currentValue;
            }
            $prevValue = $currentValue;
        }

        return $total;
    }
}

// main
$roman = "XCVII";
$result = RomanToInteger::romanToInt($roman);

echo "The integer value of $roman is $result\n";


/*
XCVII =
XC+V+I+I =
90+5+1+1 =
97
*/


/*
run:

The integer value of XCVII is 97

*/

 



answered Dec 3, 2025 by avibootz
...