Muchas veces es necesario tener que mostrar números romanos, ya sea para tomos de capítulos o porque estéticamente quedan bien en nuestra página. Gracias a la siguiente función, es posible convertir números enteros en números romanos en PHP.
<?php
function convertirNum($num){
// intval(xxx) para que convierta explícitamente a int
$n = intval($num);
$res = '';
// Array con los números romanos
$roman_numerals = 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 ($roman_numerals as $roman => $number) {
// Dividir para encontrar resultados en array
$matches = intval($n / $number);
// Asignar el numero romano al resultado
$res .= str_repeat($roman, $matches);
// Descontar el numero romano al total
$n = $n % $number;
}
// Res = String
return $res;
}
?>
Para utilizar la función de convertir números enteros en números romanos en PHP, lo único que deberemos hacer es copiar y pegarla en nuestro código al final o al principio del mismo. Luego si queremos convertir un número, realizamos lo siguiente:
<?php
echo "El número 100 en números romanos es: <strong>" . convertirNum(100) . "</strong>";
echo "<br/>";
echo "El número 799 en números romanos es: <strong>" . convertirNum(799) . "</strong>";
function convertirNum($num){
// intval(xxx) para que convierta explícitamente a int
$n = intval($num);
$res = '';
// Array con los números romanos
$roman_numerals = 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 ($roman_numerals as $roman => $number) {
// Dividir para encontrar resultados en array
$matches = intval($n / $number);
// Asignar el numero romano al resultado
$res .= str_repeat($roman, $matches);
// Descontar el numero romano al total
$n = $n % $number;
}
// Res = String
return $res;
}
De esta manera, nuestro resultado se vera de la siguiente manera:
El número 100 en números romanos es: C
El número 799 en números romanos es: DCCXCIX
La función para convertir números romanos la pueden reutilizar tantas veces quieran en los programas que quieran.