[Funktion] Bestimmte Elemente in Array zählen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] Bestimmte Elemente in Array zählen

    Hey, nachdem ich hier im Foum und auch bei Google nichts passendes gefunden habe, frage ich hier mal nach!

    Ich lasse mit hilfe einer while schleife und random(1,8); 849 elemente im array zwischen 1 und 8 erstellen. Nun möchte ich unter dieser Funktion zählen wie oft in diesem array z.b die zahl 5 vorhanden ist.
    Ich habe mir schon gedacht, wenn es keine dafür besser geeignete Funktion gibt, die elemente durch eine anreihung von if schleifen durchlaufen lassen. Nur wäre das , denke ich, sehr rechenaufwändig ?!

    Wenn ihr mehr code braucht oder so bitte bescheidsagen und nicht einfach über den thread weglesen

    Thx im vorraus!

    Zeron

  • #2
    http://de2.php.net/manual/de/functio...unt-values.php
    Slava
    bituniverse.com

    Kommentar


    • #3
      array_filter

      Wäre ein Beispiel, wie es elegant gelöst werden kann

      array_keys

      Ein zweites....ich zweifle das du gründlich gesucht hast
      Zuletzt geändert von Shadun; 17.06.2006, 01:04.

      Kommentar


      • #4
        Original geschrieben von Shadun
        array_filter

        Wäre ein Beispiel, wie es elegant gelöst werden kann
        warum?
        die von mir genannte function macht das doch!
        und wenn nicht, finde ich auch kein sinn array_filter zu benutzen
        PHP-Code:
        $ergebnisarray=array();
        foreach(
        $eingangarray as $val){
        if(isset(
        $ergebnisarray[$val]))$ergebnisarray[$val]++;
        else 
        $ergebnisarray[$val]=1;
        }


        //mein zusatz
        //wenn du nur ein Wert einmalig zählen möchtest
        $wert="deine eingabe";
        $count=0;
        foreach(
        $deinarray as $a){
        if(
        $a==$wert)$count++;
        }
        echo 
        "Wert $wert kommt $count mal vor"
        Zuletzt geändert von Slava; 17.06.2006, 02:05.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Ruhig, ich hab nur ein paar Alternativen genannt. Mit array_filter:

          PHP-Code:
          function search($val)
          {
               return (
          $val === 5);
          }

          //Array
          $ary = array(1,2,3,4,5,6,7,8,9);

          $anzahl_5 sizeOf(array_filter($ary"search")); 
          Deine Funktion ist auch gut
          Außerdem, guck ma auf die Uhrzeit unserer beiden ersten Posts

          Kommentar


          • #6
            ne ernst!
            ich schreibe einfach function array_filter damit du es dann mit meinem beispiel vergleichst.

            PHP-Code:
            $ary = array(1,2,3,4,5,6,7,5,8,9,5);


            //my_array_filter
            function my_array_filter($array,$function){
            $arrayintern=array();
            foreach(
            $array as $a){
            if(
            $function($a))$arrayintern[]=$a;
            }
            return 
            $arrayintern;
            }
            //und jetzt noch
            function search($val)
            {
                 return (
            $val === 5);
            }
            //und jetzt aufruf
            echo count(my_array_filter($ary"search"));


            #####################
            //und jetzt meine code
            $wert=5;
            $count=0;
            foreach(
            $ary as $a){
            if(
            $a==$wert)$count++;
            }
            echo 
            "Wert $wert kommt $count mal vor"
            Slava
            bituniverse.com

            Kommentar


            • #7
              Lol, also ich würd mal vorsichtig sagen dass du meinen Vorschlag künstlich lang gemacht hast.

              Mein Vorschlag
              PHP-Code:
              function search($val)
              {
                   return (
              $val === 5);
              }

              //Array
              $ary = array(1,2,3,4,5,6,7,8,9);

              $anzahl_5 sizeOf(array_filter($ary"search")); 
              Deine Version meines Vorschlages
              PHP-Code:
              $ary = array(1,2,3,4,5,6,7,5,8,9,5);


              //my_array_filter
              function my_array_filter($array,$function){
              $arrayintern=array();
              foreach(
              $array as $a){
              if(
              $function($a))$arrayintern[]=$a;
              }
              return 
              $arrayintern;
              }
              //und jetzt noch
              function search($val)
              {
                   return (
              $val === 5);
              }
              //und jetzt aufruf
              echo count(my_array_filter($ary"search")); 
              Ist ja auch egal, er hat jetzt mehrere Arten wie er das lösen kann, kann er doch selbst entscheiden wie er das macht. Und ich bemerke es nochmal, wir haben unsere Posts parallel gemacht, und dein erster Vorschlag war mit array_count_values, und diese Variante scheinst du wohl aufgegeben zu haben Ein Problem, viele Lösungen, alles wie immer

              Kommentar


              • #8
                Nein!!!!
                ich habe dir nur gezeigt was array_filter macht!!!!

                so eine Art von Array-bearbeitung lohnt sich nur dann, wenn Auswahlkriterien bei der Suche komplex sind.

                ich glaube, dass @zeron wegen unseren Streit sich nicht mehr melden wird
                Slava
                bituniverse.com

                Kommentar


                • #9
                  Achso...ja dann ist denk ich mal die Wahl klar Sind ja alles nur Vorschläge ... und so komplex wird er nicht programmieren dass er PHP Benchmarks zu Rate ziehen muss, seien sie auch menschlicher Natur

                  Kommentar

                  Lädt...
                  X