abimaelrc
Código PHP:
Ver original<?php
function romanNumber($number){
// Array que contiene los valores númericos, tanto romanos como los regulares
array(5000, '<span style="text-decoration: overline">V</span>'), array(10000, '<span style="text-decoration: overline">X</span>'), array(50000, '<span style="text-decoration: overline">L</span>'), array(100000, '<span style="text-decoration: overline">C</span>'), array(500000, '<span style="text-decoration: overline">D</span>'), array(1000000, '<span style="text-decoration: overline">M</span>'), );
// rN -> romanNumber
$rN = '';
// Convertir el valor a string (otra forma de hacerlo es $num = (string)$number;
$num = "$number";
while(true){
//Solamente verificar los valores que sean mayores de 0
if($num[0] > 0){
foreach($arr as $key => $roman){
// Verifica que el valor del array sea mayor o igual al valor númerico
if($roman[0] >= $num){
// Asigna el valor del array, si el número está entre los valores del array
if($roman[0] == $num){ $rN .= $roman[1]; }
// Si el valor del primer caracter es menor o igual a 3, asigna el valor del array anterior en donde
// se encuentre en el bucle por la cantidad de veces que dé el primer caracter
elseif($num[0] <= 3){ $rN .= str_repeat($arr[$key - 1][1], $num[0]); }
// Si el valor del primer caracter es igual a 4, asigna el valor del array anterior primero y el valor que
// está en el momento del bucle
elseif($num[0] == 4){ $rN .= $arr[$key - 1][1] . $roman[1]; }
// Si el valor del primer caracter es menor o igual a 8, asigna el valor del array anterior y del que
// está antes del anterior, por la cantidad de veces del residuo de $num[0] - 5
elseif($num[0] <= 8){ $rN .= $arr[$key - 1][1] . str_repeat($arr[$key - 2][1], ($num[0] - 5)); }
// Si el valor del primer caracter es igual a 9, asigna el valor del array del que está antes del anterior
// y del valor que está en el momento del bucle
elseif($num[0] == 9){ $rN .= $arr[$key - 2][1] . $roman[1]; }
// Evitar que continúe ya que encontró el valor
break;
}
}
}
// Quita el primer caracter del valor de lo que esté en la variable $num al momento,
// y así continúa con el proceso hasta que no queda valor
//Verifica si ya no existe algún valor en la variable $num
}
return $rN;
}