kostenloser Webspace werbefrei: lima-city


php: gleiche Werte aus Array sammeln und zählen?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    freecontent

    freecontent hat kostenlosen Webspace.

    Hallo
    wie kann ich aus einem Array, das verschiedene "Werte" mehrfach enthält sortieren nach Anzahl

    $data[0] = "aaa";
    $data[1] = "aaa";
    $data[2] = "bbbbbbbbb";
    $data[3] = "ccccccc";
    $data[4] = "ddddd";
    $data[5] = "aaa";
    $data[6] = "bbbbbbbbb";
    $data[7] = "aaa";
    $data[8] = "bbbbbbbbb";
    $data[9] = "ccccccc";

    ... also so: aaa kommt 4 mal vor und bbbbbbbbb kommt 3 mal vor, usw.
    insgesamt sind es "nur" 4 verschiedene Werte

    $ergebnis[0] = array( "aaa" , "4" );
    $ergebnis[1] = array( "bbbbbbbbb" , "3" );
    $ergebnis[2] = array( "ccccccc" , "2" );
    $ergebnis[3] = array( "ddddd" , "1" );

    ... oder ein ähnlich "sinnvolles" Ergebnis, (?)
    das mir keine Werte mehr doppelt ausgibt, aber dafür die Angabe enthält,
    wie oft das ursprüngliche Vorkommen / die Anzahl war ... ?
    ...




    Beitrag zuletzt geändert: 16.4.2010 10:27:29 von freecontent
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Am schnellsten und einfachsten einfach über array_count_values()
  4. Das geht ganz einfach mit array_count_values() -> http://www.php.net/manual/de/function.array-count-values.php

    Danach erhälst Du ein Array, welches die gefundenen Werte als Key enthält und die Häufigkeit als Wert. Also

    Array 
    ( 
      ['aaa'] => 4
      ['bbbbbbbb'] = 3


    Um das in das von Dir vorgeschlagene Format umzusortieren könntest Du dann noch sowas machen.

    $temp = array_count_values($data);
    foreach ($temp as $key => $value)
    {
     $ergebnis[] = array($key, $value);
    }
  5. Autor dieses Themas

    freecontent

    freecontent hat kostenlosen Webspace.

    yieeee-haaa, danke

    genau was ich gesuch habe ... jetzt fehlt nur noch die Sortierung nach Häufigkeit (Anzahl / Vorkommen)

    mit einem einfachen sort($ergebnis); bekomme ich das Array nach Wert alphabetisch

    also dehe die rteihenfolge einfach um: $ergebnis[] = array($value, $key);

    ok, klappt, sortiert nach Anzahl, aber aufsteigend ...
    .. wie dreh ich das nochmal um .. absteigend ... mit meister Anzahl oben ?!
    :)

    edit: ok .... mit array_reverse() .. aber das geht doch auch anders ... ASC/DESC oder so?

    Beitrag zuletzt geändert: 16.4.2010 12:47:02 von freecontent
  6. t*****b

    freecontent schrieb:
    edit: ok .... mit array_reverse() .. aber das geht doch auch anders ... ASC/DESC oder so?


    Nein, verwechsel PHP (array_reverse) nicht mit SQL (ORDER BY field ASC/DESC)
  7. djfun

    Co-Admin Kostenloser Webspace von djfun

    djfun hat kostenlosen Webspace.

    hallo freecontent,

    auf http://www.php.net/manual/de/array.sorting.php findest du eine Auflistung der Sortier-Funktionen, die PHP mitbringt.
    rsort($ergebnis)
    wäre das Gegenteil zu deinem
    sort($ergebnis)
    , d.h. es wird andersrum sortiert.

    gruß, djfun
  8. Autor dieses Themas

    freecontent

    freecontent hat kostenlosen Webspace.

    hallo

    ok nochmal zur Sortierung .... bzw Array-Umschreibung

    wie mache ich aus:

    $daten[0] = array(6,"aaaa");
    $daten[1] = array(4,"bbbb");
    $daten[2] = array(3,"cccc");
    $daten[3] = array(1,"dddd");

    das:

    $neu[0] = "aaaa";
    $neu[1] = "bbbb";
    $neu[2] = "cccc";
    $neu[3] = "dddd";

    ... ohne eine neue Schleife ... ???!?

    $temp = array_count_values($quelle);
    foreach ($temp as $key => $value) {  
     $daten[] = array($value, $key);  // ----- Anzahl und Inhalt 
     $test[] = array($key);  // ---- nur der Inhalt 
     } 
    
    rsort($daten);  // ----- Sortierung nach Anzahl

    ...
    --> und jetzt hier neues Array mit "nur" den Werten in der Sortierung (nach Anzahl)

    oder ... das Array test genauso wie das Array daten sortieren .. ?!?!
    Danke!

    Beitrag zuletzt geändert: 17.4.2010 13:54:53 von freecontent
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!