romeinse-cijfers

Gesponsorde koppelingen

PHP script bestanden

  1. romeinse-cijfers

« Lees de omschrijving en reacties

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
    // Van getal naar romeins cijfer.
    function int2roman ($num, $array = array(1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD', 100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL', 10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV', 1 => 'I')) {
        $char = '';
        if (is_int($num) && $num > 0) {  // Als $num geen getal is, dan werkt het script niet en returnt hij $char, die leeg is.
            foreach ($array as $key => $char) {
                if ($num >= $key) {
                    break;  // num is groter/gelijk aan de waarde van deze letter ($char). Breek uit!
                }
                unset($array[$key]);  // De array word kleiner, omdat deze recursief doorgegeven word -> De foreach hoeft dus minder rijen af -> sneller.
            }
            $char .= int2roman(($num-$key), $array);  // $char is al gedefinieerd, bij de uitgebroken foreach. Omdat romeinse cijfers vaak combinaties van letters zijn, moeten we recursief alles opnieuw doen.
        }
        return $char;
    }

    
    // Van romeins cijfer naar getal. (bovenstaande commentaar geld ook voor deze functie, alleen dan omgedraaid)
    function roman2int ($rom, $array = array(1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD', 100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL', 10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV', 1 => 'I')) {
        $num = '';
        if (preg_match('#^(M|D|C|L|X|V|I)+$#', $rom) && strlen($rom) > 0) {
            foreach ($array as $num => $char) {
                if (preg_match('#^'.$char.'#', $rom)) {
                    $rom = preg_replace('#^'.$char.'#', '', $rom, 1);
                    break;
                }

                unset($array[$num]);
            }

            $num += roman2int($rom, $array);
        }

        return $num;
    }

?>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.