• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Bereken de modus

  • L.Groot
  • 3 november 2010 om 19:27
  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 19:27
    • #1

    Beste,

    Hoe kan ik de modus berekenen van een array?
    Hij moet dus zegmaar de key met de hoogste frequentie weergeven, maar: als er 2 keys zijn dezelfde frequentie, dan moet ie weergeven dat er geen modus is.

    Ik had dit script geprobeerd:
    http://www.phphulp.nl/php/script/snippets/modus/1433/

    Maar die weergeeft dus niet als er 2 dezelfde frequenties zijn dat er geen modus is, wat in de wiskunde wel hoort.

    Ik hoop dat iemand me kan helpen!

    Lars
    P.S.
    Ook met array_count_values(); ben ik bekend, maar ik snap niet hoe ik dat 2e wat ik wil dan doe.

  • Guest, wil je besparen op je domeinnamen? (ad)
  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 20:09
    • #2

    Ik heb het voor je gemaakt, met de array die ik heb gebruikt werkt het tenminste.

    Misschien moet je zelf nog een keer testen met een andere array, heb zelf fe geen tijd om dat te doen. School examens....

    Code:

    PHP
    <?php
    $getallen	= array(1,1,2,2,2,3,4,5,5,5);
    $volgorde	= array_count_values($getallen);
    
    
    $i = 1;
    
    
    $hoeveel = array();
    $aantal	 = array();
    
    
    foreach($volgorde as $getal => $g)
    {
    	if($g >= 2)
    	{
    		$hoeveel[$i] = $getal;
    		$aantal[$i]  = $g;
    	}
    	$i++;
    }
    
    
    
    
    foreach($aantal as $k => $v)
    {
    	if(max($aantal) == $v)
    	{
    		echo $hoeveel[$k];
    	}
    }
    ?>
    Toon Meer

    Graag gedaan!

    Mees Molenaar

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 20:53
    • #3

    Heey,

    Het werkt bijna.
    Als ik deze reeks heb:

    PHP
    1,0
    2,0
    3,0
    4,0
    4,0
    5,0


    Dan werkt ie, zegt ie dat de modus 4 is.

    Maar als ik deze reeks heb:

    PHP
    1,0
    2,0
    3,0
    4,0
    4,0


    Dan werkt ie niet, en geeft ie dus niet weer..

    Lars

  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 20:58
    • #4

    Als ik dit geef:

    PHP
    $getallen	= array(1,2,3,4,4);

    Dan werkt het gewoon hoor.
    Anders denk ik dat het door de komma getallen komt, want een komma wordt gelezen als de volgende waarde in een array.

    En met een punt kan niet, want die functie is alleen voor strings en integers...

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 21:12
    • #5

    Hmm..
    Als ik de array print_r(); dan krijg ik dit eruit:

    PHP
    Array ( [0] => 1.0 [1] => 2.0 [2] => 4.0 [3] => 6.0 [4] => 6.0 )


    En dan zegt ie "Geen modus".
    Heb het script een beetje bewerkt:

    PHP
    function modus($input, $afrond){
    $getallen    = str_replace(",", ".", $input);
    echo print_r($getallen);
    $volgorde    = array_count_values($getallen);
    
    
    $i = 1;
    
    
    $hoeveel = array();
    $aantal     = array();
    
    
    foreach($volgorde as $getal => $g)
    {
        if($g >= 2)
        {
            $hoeveel[$i] = $getal;
            $aantal[$i]  = $g;
        }
        $i++;
    }
    
    
    
    
    foreach($aantal as $k => $v)
    {
        if(max($aantal) == $v)
        {
    		$modus = $hoeveel[$k];
            echo number_format($hoeveel[$k], $afrond, ',', '.');
    		echo '<br /><small><i><b>Berekening:</b> Kijk welk getal het meest voorkomt / de hoogste frequentie heeft.<br />In dit geval is dat '.number_format($hoeveel[$k], $afrond, ',', '.').'</i>.</small>';
        }
    }
    if($modus == ""){
    echo 'Geen modus';
    }
    }
    Toon Meer


    Ik wou het in een functie, omdat ik het meerdere malen aanroep.

    Bedankt alvast,

    Lars

    Nieuwe reactie samengevoegd met originele reactie op 03.11.10 21:18:08:
    Ook als ik de reeks 1-2-3-4-4 gebruik krijg ik de foutmelding...

  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 21:20
    • #6

    Heb jij deze error dan niet?

    PHP
    array_count_values() [function.array-count-values]: Can only count STRING and INTEGER values!

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 21:21
    • #7

    Nee, krijg ik niet :)
    Maar ik heb het ook geprobeerd zonder comma's, en dat werkt dus ook niet..

    Lars

  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 21:22
    • #8
    PHP
    $getallen    = array(1,2,2,3,4);
    
    
    $volgorde    = array_count_values($getallen);
    
    
    $i = 1;
    
    
    $hoeveel = array();
    $aantal     = array();
    
    
    foreach($volgorde as $getal => $g)
    {
        if($g >= 2)
        {
            $hoeveel[$i] = $getal;
            $aantal[$i]  = $g;
        }
        $i++;
    }
    
    
    
    
    foreach($aantal as $k => $v)
    {
        if(max($aantal) == $v)
        {
            $modus = $hoeveel[$k];
            echo number_format($hoeveel[$k], $afrond, ',', '.');
            echo '<small><i><b>Berekening:</b> Kijk welk getal het meest voorkomt / de hoogste frequentie heeft.In dit geval is dat '.number_format($hoeveel[$k], $afrond, ',', '.').'</i>.</small>';
        }
    }
    if($modus == ""){
    echo 'Geen modus';
    }
    Toon Meer

    Dan komt gewoon netjes:

    PHP
    2Berekening: Kijk welk getal het meest voorkomt / de hoogste frequentie heeft.In dit geval is dat 2.

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Rahl
    Gevallen leider
    Berichten
    114
    • 3 november 2010 om 21:31
    • #9

    Die code die je nu gebruikt is eigenlijk best wel super slordig...

    Probeer dit eens ;)

    PHP
    <?php
    function getHighestArrayKeyFrequence($arr)
    {
    	$frequence = array_count_values($arr);
    	natsort($frequence);
    
    
    	$duplicated = array_count_values($frequence);
    	natsort($duplicated);
    
    
    	return $duplicated[max($frequence)] > 1 ? null : current(array_keys(array_reverse($frequence)));
    }
    
    
    $names = array(
    	'Jack' => 'Johnson',
    	'Mary' => 'Flint',
    	'Sarah' => 'Stones',
    	'Harry' => 'Potter',
    	'James' => 'Johnson',
    	'Hermione' => 'Granger',
    	'Ron' => 'Weasley',
    	'Draco' => 'Malfoy',);
    
    
    $mostFrequentName = getHighestArrayKeyFrequence($names);
    if($mostFrequentName != null)
    	echo 'The most frequent used name is ' . $mostFrequentName;
    else
    	echo 'I\\'m sorry, I\\'ve tried every workaround, even tried to convince people to change their surname, but unfortunately there is no surname that is actually used the most.';
    Toon Meer
  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 21:39
    • #10

    Ja klopt, ben niet niet een erg gevorderd scripter ;)
    En had dit even snel gemaakt!

    PS: Ziet er erg goed uit ;). Alleen ik hou meer van gewoon Nederlands.

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 21:46
    • #11

    Rahl,
    Het werkt nog niet, nog steeds hetzelfde probleem..
    Array is gewoon 1-2-3-4-4 en dan geeft ie dus dat fout bericht weer...

    Lars

    Nieuwe reactie samengevoegd met originele reactie op 03.11.10 21:49:44:
    Ik heb het script even losgekoppeld van de site.
    Dan krijg ik hetzelfde:
    http://planemania.nl/overig/array.php

    In dit script:

    PHP
    <?php
    function modus($arr){
        $frequence = array_count_values($arr);
        natsort($frequence);
    
    
        $duplicated = array_count_values($frequence);
        natsort($duplicated);
    	
        return $duplicated[max($frequence)] > 1 ? null : current(array_keys(array_reverse($frequence)));
    }
    
    
    echo '<font face="arial">De modus is: <b>';
    $modus = modus(array(1,2,3,4,4));
    if($modus != null) {
    echo $modus;
    } else{
    echo 'Geen modus';
    }
    echo '</b></font>';
    ?>
    Toon Meer

    Wat is het :(

    Lars

  • Rahl
    Gevallen leider
    Berichten
    114
    • 3 november 2010 om 21:56
    • #12

    Nee, had zelf ook even gekeken. Foutje van mijzelf, sorry:

    PHP
    <?php
    function getHighestArrayKeyFrequence($arr)
    {
    	$frequence = array_count_values($arr);
    	natsort($frequence);
    
    
    	$duplicated = array_count_values($frequence);
    	natsort($duplicated);
    	return $duplicated[max($frequence)] > 1 ? null : array_pop(array_keys($frequence));
    }
    
    
    $names = array(
    	'Jack' => 'Johnson',
    	'Mary' => 'Flint',
    	'Sarah' => 'Stones',
    	'Harry' => 'Potter',
    	'James' => 'Johnson',
    	'Hermione' => 'Granger',
    	'Ron' => 'Weasley',
    	'Draco' => 'Malfoy',);
    
    
    $mostFrequentName = getHighestArrayKeyFrequence($names);
    if($mostFrequentName != null)
    	echo 'The most frequent used name is ' . $mostFrequentName;
    else
    	echo 'I\\'m sorry, I\\'ve tried every workaround, even tried to convince people to change their surname, but unfortunately there is no surname that is actually used the most.';
    Toon Meer

    Moet wel zeggen dat wat je probeert te doen, geen eitje is voor iemand die nog niet zo goed overweg kan met PHP (in elk geval niet om het netjes te doen)

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 21:58
    • #13

    Oja,
    En het is dus deze fout:
    Als één van de modus getallen (dus het getal met de hoogste frequentie) achteraan staat dus:
    1-2-3-4-4
    Dan zegt ie: "Geen modus".
    Echter als ik probeer 1-2-4-4-5, dan wel.
    Het is dus als het modus-getal achter staat, werkt het niet.

    Lars

  • Rahl
    Gevallen leider
    Berichten
    114
    • 3 november 2010 om 22:00
    • #14

    Erm, dat heb ik niet hoor... Zou jij dus ook niet kunnen hebben als je niks hebt aangepast.

    Citaat

    The most frequent used name is 4

  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 22:10
    • #15

    Dit is de array die ik erin stop:

    PHP
    $cijfers_keepin = explode("\\n", strip_tags($_POST['cijfers']));


    En die $_POST komt uit een text veld.
    Je moet daar per regel ??n cijfer invoeren.

    En dan zet ik die array letterlijk in de functie..
    Op de ??n of andere manier werkt dat dus niet...

    Heeft er iemand een oplossing?

    Lars

  • MrMees
    De causeur!
    Berichten
    464
    • 3 november 2010 om 22:16
    • #16

    Wat als je die array gewoon print?
    Komt er dan wat zinnigs uit?

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Rahl
    Gevallen leider
    Berichten
    114
    • 3 november 2010 om 22:17
    • #17
    PHP
    <?php
    function getHighestArrayKeyFrequence($arr)
    {
    	$frequence = array_count_values($arr);
    	natsort($frequence);
    
    
    	$duplicated = array_count_values($frequence);
    	natsort($duplicated);
    	return $duplicated[max($frequence)] > 1 ? null : array_pop(array_keys($frequence));
    }
    if(isset($_POST['textarea']))
    {
    	$names = explode("\\r\\n", htmlspecialchars($_POST['textarea']));
    	
    	$mostFrequentName = getHighestArrayKeyFrequence($names);
    	if($mostFrequentName != null)
    		echo 'The most frequent used name is ' . $mostFrequentName;
    	else
    		echo 'I\\'m sorry, I\\'ve tried every workaround, even tried to convince people to change their surname, but unfortunately there is no surname that is actually used the most.';
    }
    ?>
    <br />
    <form method="post">
    <textarea name="textarea" cols="70" rows="15"><?php if(isset($_POST['textarea'])) echo $_POST['textarea']; ?></textarea><br />
    <input type="submit" value="Verwerken" />
    </form>
    Toon Meer
  • L.Groot
    Elite members
    Ontvangen Reacties
    31
    Berichten
    4.888
    • 3 november 2010 om 22:23
    • #18

    Rahl,

    Heel erg bedankt, het werkt dankzij jou!

    Lars

  • Axl_H
    WAN\'T TO LEARN SOMETHING
    Berichten
    1.465
    • 4 november 2010 om 10:20
    • #19

    @Rhal, misschien kan je ook uitleggen wat je hebt gedaan, omdat hij er anders niks van leert.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design