+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Arraysortierung

  1. #1
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User 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 Peter ist ein richtiges Arbeitstier - DANKE Peter ist ein richtiges Arbeitstier - DANKE Peter ist ein richtiges Arbeitstier - DANKE Peter ist ein richtiges Arbeitstier - DANKE Peter ist ein richtiges Arbeitstier - DANKE Avatar von Peter
    Registriert seit
    Nov 2001
    Ort
    Vienna
    Beiträge
    3.424
    *zurKenntnisnehm*
    _________-- - adicto otra vez - --
    (¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
    Unterwasserrugby - der dreidimensionale Sport

  3. #3
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Waren heute Archeologenprüfungen?
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  4. #4
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User 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 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht 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 steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User 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 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht 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!

+ Antworten

Aktive Benutzer

Aktive Benutzer

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

     

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