modus

Gesponsorde koppelingen

PHP script bestanden

  1. modus

« Lees de omschrijving en reacties

Syntax:
mixed modus(mixed $var1 [, mixed $var2 [, mixed $var3...]];

Er is een optionele argument, SORT_ASC (momenteel nog wel!) die ipv één waarde een ARRAY teruggeeft met daarbij het aantal keer dat de modulus voorkomt.

Hoe doe je dat?
$array = array(1, 2, 3, 3, 3, 3, 4, 5);
print_r(modus($array)); // geeft 3, want die komt het meeste voor
print_r(modus($array, SORT_ASC)); // geeft array terug: [0] is 3 en [1] is 4

Dat ik SORT_ASC gebruik is toevallig, anders krijg ik een notice!

De code is aan het begin vrijwel gelijk aan average(), behalve dat er nu niet naar gekeken wordt of het numeriek is.

En uiteindelijk de code:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php

// function modus()
function modus()
    {

    // variabelen instellen
    $waarden = array();
    $modus = false;
    $modus_array = array();
    $prefix = "~~~";
    
    // alle argumenten die opgegeven zijn tot 1 array combineren
    $argumenten = func_get_args();
        
    // alle argumenten aflopen    
    foreach($argumenten as $argument)
        {
    
        // als het opgegeven argument een array is
        if(is_array($argument))
            {
        
            $array = $argument;
            foreach($array as $value)
                {
                
                $waarden[] = $prefix . $value;
                }

            unset($array);
            }

        else
            {
            $waarden[] = strval($prefix . $argument);
            }
        }


    // controleer op er een array is gegeven
    if(count($waarden) == 0)
        {

        return false;
        }


    // alle getallen aflopen en deze nummer
    $array_modus = array_count_values($waarden);
    
    // sort getallen
    array_multisort($array_modus, SORT_DESC, SORT_REGULAR);    
    
    // geeft de key van de eerste waarde(dus die het vaakst voorkomt) terug
    $modus = key($array_modus);
    $modus_count = current($array_modulus);

    // verwijder de $prefix weer
    $modus = substr($modulus, strlen($prefix));
    
    // kijk wat gereturnd moet worden
    if(array_search(SORT_ASC, $argumenten) !== false)
        {

        // array teruggeven:
        return array($modus, $modus_count);
        }


    // returnd uiteindelijk de modus weer
    return $modus;
    }








// testen
$array1 = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
$array2 = array(1, 2, 3, 4, 5, 6, 7, 9, 9, 9, 9, 9, 9);
$array3 = array("bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol", "bol");

echo "<h2>Arraya:</h2>";
echo "<pre>";
echo "<br>";
print_r($array1);
echo "<br>";
print_r($array2);
echo "<br>";
print_r($array3);
echo "</pre>";
echo "<br>";

echo "<h2>Modus</h2>";
echo "<pre>";
echo "ZONDER SORT_ASC<br>";
print_r(modus($array1, $array3));
echo "<br><br>MET SORT_ASC<br>";
print_r(modus($array1, $array2, $array3, SORT_ASC));
echo "</pre>";
echo "<br>";
?>

 
 

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.