Función para convertir a números romanos en PHP

publicado por: Anonymous

Esto es una pregunta/respuesta y una pregunta al mismo tiempo.

No sé si existe oficialmente una función nativa de PHP que sirva para convertir cualquier número entero en número romano.

Aportaré una función en auto-respuesta, con la idea de compartirla y de aceptar críticas sobre posibles fallos, o respuestas que presenten una función mejor o más completa.

solución

Esta es la función que uso para convertir a números romanos.

VER DEMO

php


<?php 

    function a_romano($integer, $upcase = true) 
    {
        $table = 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);
        $return = '';
        while($integer > 0) 
        {
            foreach($table as $rom=>$arb) 
            {
                if($integer >= $arb)
                {
                    $integer -= $arb;
                    $return .= $rom;
                    break;
                }
            }
        }
        return $return;
    }

/*Probando*/

echo a_romano(1).PHP_EOL;
echo a_romano(12).PHP_EOL;
echo a_romano(53).PHP_EOL;
echo a_romano(2017).PHP_EOL;    
?>

resultado

I
XII
LIII
MMXVII

Ver: Numbers to Roman Numbers with php

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *