userman: Dringend: Gruppierung

moin!

hab nen array, in dem sich verschiedene strings befinden.
z.b.:
test[]="blatext1";
test[]="blatext2";
test[]="blatext3";
test[]="blatext1";
test[]="blatext1";

nun will ich, dass diese werte ausgegeben werden.
das wäre dann z.b. so: foreach($test as $test_){echo "$test_ <br>";}
=>
blatext1
blatext2
blatext3
blatext1
blatext1

nun will ich aber noch, dass diese etwas grupiert werden,
sodass am schluss sowas dransteht:
=>
blatext1 (3 Mal vorgekommen)
blatext2 (2 Mal vorgekommen)
blatext3 (3 Mal vorgekommen)

wie schafft man sowas möglichst einfach??

vielen dank

  1. Hallo!

    Dringend ist zum Beispiel, daß schnell ein Krankenwagen zu einem Verletzten kommt. Dringend ist nicht Dein PHP-Problem.

    blatext1 (3 Mal vorgekommen)
    blatext2 (2 Mal vorgekommen)
    blatext3 (3 Mal vorgekommen)

    http://www.php.net/manual/de/function.array-count-values.php

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. ok... erstmal danke.
      ABER es ist immer noch ein problem...

      die formatierung der textes!

      beim ausführen dieses befehls (print_r(array_count_values ($referers));) erhalte ich folgende ausgabe:
      Array (
      [http://ipops.de/script/popups/popup.php?partner=aw] => 34
      [http://ipops.de/script/popups/popup.php?partner=sa] => 1
      )

      wie kann man die ausgabe etwas verändern, sodass das z.b. in
      2 anderen arrays gespeichert wird.
      =>z.b.:
      url[]="http://ipops.de/script/popups/popup.php?partner=aw";anzahl[]="34";
      url[]="http://ipops.de/script/popups/popup.php?partner=sa";anzahl[]="1";
      ?
      denn der text "Array ( [..." wird von php selbst erzeugt :-(

      1. ok... erstmal danke.
        ABER es ist immer noch ein problem...

        Dein Problem ist, dass Du versuchst eine fertige Lösung zu bekommen die es hier nicht gibt.
        Benutze das Handbuch, stelle fest was der Befehl print_r macht.
        Gucke nach den Befehlen echo () foreach (), print().
        Fertige Lösungen gibt es gegen Bezahlung zur Zeit 70 EURO /Stunde.
        Von mir.

        TomIRl

        1. Moin TomIRl!

          Ich hoffe, Du bist nicht sauer, weil ich die Lösung quasi fertig gepostet habe... Aber ich hielt dies für eine einfache, wiederholt auftretende Standardfrage (soetwas sehr einfaches wird ja auch in jedem verflixtem Programmierlehrgang gemacht)- da habe ich mir gedacht: rein damit und wir können künftige Frager auf die Suche verweisen...

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Meinereinerselbst ist auf der Suche nach Aufträgen
          1. Moin TomIRl!

            Ich hoffe, Du bist nicht sauer, weil ich die Lösung quasi fertig gepostet habe... Aber ich hielt dies für eine einfache,

            Nö bin nicht sauer...
            Hab auch manchmal meinen sozialen Tag und liefere fertige Lösungen.
            Ich hoffe nur erguckt sich die Sache die Du gemacht hast an und lernt draus.
            Nicht dass er morgen fragt wie man die Überschriften in PHP formatiert :-)).
            Viele Grüße aus Berlin
            TomIRL

  2. Moin!

    Sch... T-Offline hat mich gekickt. Aber ich habe mir die Arbeit genacht, also will ich es auch posten:

    http://fastix.dyndns.org/tests/test4.php
    (Es funktioniert also)

    --------------------------------
    <?php

    $test=array("blatext1", "blatext2","blatext3","blatext1","blatext1");

    sort($test,SORT_STRING);

    So wird das Array ganz einfach sortiert.

    $k= (-1);
    $alt="";

    Zwei Hilfvariablen

    for($i = 0; $i < count($test); $i++) {

    Wir gehen mal alle durch...

    if ($test[$i]<>$alt) {
      # Wenn Die Variable nicht der Hilfvariable entspricht:
        $k++;
        # zähle k eines höher
        $alt=$test[$i];
        # Die Hilfvariable wird für künfige Vergleiche auf den aktuellen Wert des sortierten Array gesetzt.
        $wert[$k]    = $test[$i];
        # In ein weiteres Array wird der Wert geschrieben
        $anzahl[$k] = 1;
        # Und die Anzahl in einem array, welches die Häufigkeit enthält eine 1 geschrieben.
      } else {
      # sonst
        $anzahl[$k]  = $anzahl[$k]+1;
        # Erhöhen wir die Zahl der Vorkommen im Array.
      } # end if
    }# next $i

    echo "<h3>Ausgabe:</h3>\n";
    for($i = 0; $i < count($wert); $i++) {
      echo $wert[$i].' kommt '.$anzahl[$i].' mal vor.<br>';

    }

    echo "<hr>\n";
    echo "<h3>Quelltext:</h3>\n";
    show_source("test4.php");
    ?>
    --------------------------------
    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. vielen dank!

  3. hi,

    hab nen array, in dem sich verschiedene strings befinden.
    z.b.:
    test[]="blatext1";
    test[]="blatext2";
    test[]="blatext3";
    test[]="blatext1";
    test[]="blatext1";
    [...]
    nun will ich aber noch, dass diese etwas grupiert werden,
    sodass am schluss sowas dransteht:
    =>
    blatext1 (3 Mal vorgekommen)
    blatext2 (2 Mal vorgekommen)
    blatext3 (3 Mal vorgekommen)
    wie schafft man sowas möglichst einfach??

    möglichst einfach wäre mittels array_count_values.
    http://www.php.net/manual/de/function.array-count-values.php

    gruss,
    wahsaga