- Home
- Przykłady i porady PHP79
- Inne pomoce, software6
- Banery
- Hyde Park Private Zone6
- Polityka cookies
- Udostępnianie tekstów
© 2001 - 2026 PhpCodex
Zamiana cyfr romańskich na arabskie
Convert Roman Numerals to Arabic Numbers
Przykład PHP2014-03-07 stopień trudności: łatwyNie możesz spamiętać jak przeliczać rzymskie cyfry ? nic prostszego. Przykład konwersji cyfr romańskich na arabskie, rzadko przydatne ale czasem bywa...
<?
$romans = 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,
);
//ustawimy przykładowo rok 2012
$roman = 'MMXII';
$result = 0;
foreach ($romans as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
echo $result;
?>
Poniżej snippet autorstwa Davida L.Weinera pozwalający odwrócić powyższą zamianę czyli zamienimy cyfry arabskie na romańskie.
<?
function to_roman($num) {
//Function to convert an arabic number ($num) to a roman
//numeral. $num must be between 0 and 9,999
//Funkcja obsługuje liczby od 0 and 9,999
//Copyright 2000 David L. Weiner <davew@webmast.com>. All Rights Reserved
if ($num < 0 || $num > 9999) { return -1; } // out of range
$r_ones = array(1=> "I", 2=>"II", 3=>"III", 4=>"IV", 5=>"V", 6=>"VI", 7=>"VII", 8=>"VIII",
9=>"IX");
$r_tens = array(1=> "X", 2=>"XX", 3=>"XXX", 4=>"XL", 5=>"L", 6=>"LX", 7=>"LXX",
8=>"LXXX", 9=>"XC");
$r_hund = array(1=> "C", 2=>"CC", 3=>"CCC", 4=>"CD", 5=>"D", 6=>"DC", 7=>"DCC",
8=>"DCCC", 9=>"CM");
$r_thou = array(1=> "M", 2=>"MM", 3=>"MMM", 4=>"MMMM", 5=>"MMMMM", 6=>"MMMMMM",
7=>"MMMMMMM", 8=>"MMMMMMMM", 9=>"MMMMMMMMM");
$ones = $num % 10;
$tens = ($num - $ones) % 100;
$hundreds = ($num - $tens - $ones) % 1000;
$thou = ($num - $hundreds - $tens - $ones) % 10000;
$tens = $tens / 10;
$hundreds = $hundreds / 100;
$thou = $thou / 1000;
if ($thou) { $rnum .= $r_thou[$thou]; }
if ($hundreds) { $rnum .= $r_hund[$hundreds]; }
if ($tens) { $rnum .= $r_tens[$tens]; }
if ($ones) { $rnum .= $r_ones[$ones]; }
return $rnum;
}
$date = "2013";
$roman = to_roman($date);
echo $roman;
?>
Kalkulator JavaScript: http://www.javascriptsource.com/math-related/roman-numeral-converter-2.html







