Ergebnis 1 bis 7 von 7

Thema: Arraysortierung

  1. #1
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869

    Arraysortierung

    Gerade bei der Sortierung von mehrdimensionalen Arrays muss man häufig komplizierte Algorhythmen einsetzen, um die gewünschte Sortierung zu erreichen.
    Ehrlichgesagt hab ich schon oft geflucht, weil die Ergebnisse nicht so waren wie erwartet.
    In den Kommentaren von php.net bin ich über folgende Array-Sortierungsroutine gestolpert, die ein mehrdimensionales Array nach mehreren anzugebenen key sortiert. Genaugenommen ist dies ein Zweizeiler, wo man mehr als 3mal hinschauen muss, um es nachzuvollziehen, aber ausgesprochen geil von der Funktionalität:

    PHP-Code:
    function masort(&$data$sortby){
       if(
    is_array($sortby)){
           
    $sortby join(',',$sortby);
       }

       
    uasort($data,create_function('$a,$b','$skeys = split(\',\',\''.$sortby.'\');
           foreach($skeys as $key){
               if( ($c = strcasecmp($a[$key],$b[$key])) != 0 ){
                   return($c);
               }
           }
           return($c); '
    ));

    Der Aufruf hat als Parameter das Array und dann der / die Keys.
    Will man nur nach einem Key sortieren, gibt man den Key an, bei mehreren einfach die Liste der Keys als Array.

    Auch habe ich hier erstmals die Funktion create_function gesehen, mit der man on-the-fly eine Funktion kreiert.
    Will man die Sortierreihenfolge umkehren, so muss man lediglich in der create_function die Werte $a und $b vertauschen.
    join ist nichts anderes als ein alias auf implode.

    Ein genialer Streich ...
    Geändert von steffenk (14.06.2005 um 23:20 Uhr)

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  2. #2
    TP-Moderator Avatar von Peter
    Registriert seit
    Nov 2001
    Ort
    Vienna
    Beiträge
    3.425
    *zurKenntnisnehm*
    _________-- - adicto otra vez - --
    (¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
    Unterwasserrugby - der dreidimensionale Sport

  3. #3
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Waren heute Archeologenprüfungen?
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  4. #4
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869


    nein - eine freundliche Geste von Peter **dank **

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  5. #5
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Interessant, aber spääät jetzt zu begreifen

    Doch create_function() ist auch merkenswert!
    Kann man die erzeugte Funktion (für Test)
    sichtbar machen oder bleibt sie versteckt?
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  6. #6
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    nein, die ist nur solange gültig wie sie gebraucht wird, also temporär.

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  7. #7
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    also nur gerade für die 1 Ausführung, nicht mal für die Dauer des Scripts ... habs befürchtet, da sie ja keinen Namen bekommt!

    Trotzdem mal drüber guck!
    Danke Dir!
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51