lvl: Häufigkeit eines Wertes in einem Array ermitteln

Welche Methode ist am sinnvollsten, um die Häufigkeit eines Wertes in einem Array zu ermitteln?

Bsp.: $array = array(1,2,3,3,4,4,4,5);
Nun möchte ich wissen wie oft der Wert 4 vorkommt.

Meine Idee dazu war:

  
$sum = 0;  
for($i = 0; $i<count($array); $i++)  
{  
 $sum += (4 == $array[$i]) ? 1 : 0;  
}  
echo $sum;  

oder gibt es da eine bessere Methode?

--
MfG lvl
  1. Hi,

    Welche Methode ist am sinnvollsten, um die Häufigkeit eines Wertes in einem Array zu ermitteln?

    Sinnvoll ist, im Handbuch nachzuschlagen, welche Funktionen sich für eine Aufgabe anbieten könnten ... bevor man fragt.

    Bsp.: $array = array(1,2,3,3,4,4,4,5);
    Nun möchte ich wissen wie oft der Wert 4 vorkommt.

    Meine Idee dazu war:

    $sum = 0;
    for($i = 0; $i<count($array); $i++)
    {
    $sum += (4 == $array[$i]) ? 1 : 0;
    }
    echo $sum;

    
    >   
    > oder gibt es da eine bessere Methode?  
      
    [array_count_values](http://www.php.net/manual/en/function.array-count-values.php) würde sich anbieten.  
    Das zählt zwar auch noch "alle anderen" Werte - aber bei einem "handelsüblichen" Array-Umfang dürfte das als nativ implementierte Funktionalität immer noch performanter sein, als eine selbstgestrickte Lösung.  
      
    MfG ChrisB  
      
    
    -- 
    „This is the author's opinion, not necessarily that of Starbucks.“
    
    1. Sinnvoll ist, im Handbuch nachzuschlagen, welche Funktionen sich für eine Aufgabe anbieten könnten ... bevor man fragt.

      Das habe ich durchaus getan, habe mir unter der Kurzbeschreibung von array_count_values ("Zählt die Werte eines Arrays") etwas anderes vorgestellt.
      Ort der Kurzbeschreibung

      --
      MfG lvl
      1. Das habe ich durchaus getan, habe mir unter der Kurzbeschreibung von array_count_values ("Zählt die Werte eines Arrays") etwas anderes vorgestellt.

        Ggf. solltest du die Richtigkeit deiner Vorstellungen erst durch Lesen der Detailbeschreibung verifizieren - besonders im technischen Umfeld ist das äußerst wichtig, sonst kommt sowas dabei raus.

        1. Ggf. solltest du die Richtigkeit deiner Vorstellungen erst durch Lesen der Detailbeschreibung verifizieren - besonders im technischen Umfeld ist das äußerst wichtig, sonst kommt sowas dabei raus.

          Ich denke, dass eine Kurzbezeichnung dazu dient, ebend nicht ALLES im Detail lesen zu müssen. Sondern nur das, was meiner Fragestellung nahe kommt. Da dies nicht der Fall war, darf man mir das Nachfragen nicht übel nehmen.

          PS. Ihr wisst doch, Zeit ist Geld :D *g

          --
          MfG lvl
          1. Ich denke, dass eine Kurzbezeichnung dazu dient, ebend nicht ALLES im Detail lesen zu müssen. Sondern nur das, was meiner Fragestellung nahe kommt.

            Natürlich - und gerade dann wenn man es nur 2 Funktionen gibt, die überhaupt etwas zählen (bzw. "zählen" in der Kurzbeschreibung tragen), wäre das Lesen der Detailbeschreibung interessant. Durch Lesen dieser (oder zumindest der Einleitung) hättest du schnell verifzieren könne, ob es die richtige Funktion für dich ist oder nicht.

            "Zählt die Werte eines Arrays" ist für meine Begriffe äußerst schwammig, ich hätte mich (ohne die Funktion zu kennen) nicht vermuten getraut, wie diese Funktion genau arbeitet - zumal die Summe aller Elemente mit count() ermittelt wird und es sich offenbar nicht um ein alias handet.

            Ziel dieses Forums soll auch sein, den Fragenden zu vermitteln, wie man sich selbst Informationen beschafft. Von wegen "Gib jemandem Wasser und er hat zu trinken; Besser: Zeige jemandem, wie man einen Brunnen gräbt ..."

            1. Hallöle!

              Ziel dieses Forums soll auch sein, den Fragenden zu vermitteln, wie man sich selbst Informationen beschafft. Von wegen "Gib jemandem Wasser und er hat zu trinken; Besser: Zeige jemandem, wie man einen Brunnen gräbt ..."

              "... und gib ihm währenddessen Wasser, damit er beim Graben nicht verdurstet."

              File Griese,

              Stonie

              --
              It's no good you trying to sit on the fence
              And hope that the trouble will pass
              'Cause sitting on fences can make you a pain in the ass.
              Und im Übrigen kennt auch Stonie Wayne.
          2. Hi Ivl,

            PS. Ihr wisst doch, Zeit ist Geld

            gut, dann schlage ich vor, dass Du jetzt an ChrisB und suit eine angemessene Summe auf deren Konto überweist, um _deren_ Zeit, die sie Dir gewidmet haben, abzugelten. Die entsprechende Kontoverbindung geben sie Dir sicher gerne bekannt.

            Mit lieben Grüßen aus Wien

            Michi

            --
            Self-Code: ie:{ fl:| br:> va:} ls:# fo:| rl:° n4:# ss:| de:> js:{ ch:? mo:) zu:}
            Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            It is nice to be important - but it is more important to be nice.
            1. gut, dann schlage ich vor, dass Du jetzt an ChrisB und suit eine angemessene Summe auf deren Konto überweist, um _deren_ Zeit, die sie Dir gewidmet haben, abzugelten.

              Das wäre zwar eine nette Geste, aber in meinem Fall ein Tropfen auf den heißen Stein - alle beträgte < 4 Stellen verdampfen auf meinem Konto leider sehr schnell. Aber es wäre ein Abwechslung, zwischen den vielen roten Buchungszeilen mal eine Schwarze zu sehen :)