Sortierung
Aus php bar
Eine Sammlung von Funktionen zur Sortierung von Listen und Arrays.
Inhaltsverzeichnis |
Arrays sortieren
einfache Arrays
... Sortieren von Arrays ohne Rücksicht auf die Schlüssel ...
- sort() - einfache Sortierung
- rsort() - rückwertige Sortierung
- usort() - Sortierung unter verwendung einer Benutzerfunktion
Assoziative Arrays
... Sortieren unter Beibehaltung der Schlüssel-Werte-Verbindung ...
- asort() - einfache Sortierung
- arsort() - rückwertige Sortierung
- uasort() - Sortierung unter verwendung eine Benutzerfunktion
- ksort() - einfache Sortierung anhand des Schlüssels
- krsort() - rückwertige Sortierung anhand des Schlüssels
- uksort() - Sortierung anhand des Schlüssels unter verwendung einer Benutzerfunktion
- natsort() - 'natürliche' Sortierung
- natcasesort() - 'natürliche' Sortierung Groß-/Kleinschreibung ignorierend
2-Dimensionale Arrays
- Siehe auch: Multidimensionales Array sortieren
2-Dimensionale Arrays sind gleich einer Tabelle:
a b c 0 x x x 1 x x x 2 x x x
Bei der Struktur solcher Arrays muss man grundsätzlich zwischen zwei verschiedenen Arten des Aufbaus unterscheiden: Spalte->Zeile ($array['spalte'][]) und Zeile->Spalte ($array[]['spalte']).
Spalte->Zeile
1 $array['a'] = array( 'x', 'x', 'x', ); 2 $array['b'] = array( 'x', 'x', 'x', ); 3 $array['c'] = array( 'x', 'x', 'x', );
Diese Variante lässt sich relativ einfach mit array_multisort() sortieren:
1 // sortierung nach Spalte 'c' 2 array_multisort( $array['c'], $array['a'], $array['b'] );
Wichtig ist das man wirklich alle Spalten angibt, auch wenn man nicht nach allen sortieren möchte.
Zeile->Spalte
1 $array[] = array( 'a' => 'x', 'b' => 'x', 'c' => 'x', ); 2 $array[] = array( 'a' => 'x', 'b' => 'x', 'c' => 'x', ); 3 $array[] = array( 'a' => 'x', 'b' => 'x', 'c' => 'x', );
Dies ist die etwas kompliziertere Variante, welche man aber z. B. als Ergebnis einer Datenbankabfrage erhalten kann:
1 while ( $rows[] = mysql_fetch_assoc( $mysql_result ) ) {}
Um hier nach Spalte 'c' sortieren zu können, müssen wir erst die Werte der Spalte in ein Extra-Array kopieren:
1 // sortiere nach Spalte 'c' 2 foreach ( $array as $zeile ) 3 { 4 $sort_array[] = $zeile['c']; 5 } 6 array_multisort( $sort_array , $array );
Listen sortieren
Als Listen bezeichen wir Zeichenketten mit Werten die durch ein Bestimmtes Zeichen getrennt sind, z. B.
1 $number_list = '1,2,3,4,5,6'; 2 $word_list = 'alpha;beta;gamme;delta'; 3 $value_list = '1.23 100 2 1157.30 37';
Beim sortieren von Listen tun wir nichts weiter als die Liste in ein Array umzuandeln und noch der Sortierung wieder in eine Liste zurückverwandeln.
1 $value_list = '1.23 100 2 1157.30 37'; 2 $array = explode( ' ', $value_list ); 3 sort( $array ); 4 $value_list = implode( ' ', $array ); 5 echo $value_list;
kurz:
1 echo implode( ' ', sort( explode( ' ', '1.23 100 2 1157.30 37' ) ) );
1.23 2 37 100 1157.30
Unterschiede ermitteln
... mögliche Funktionen zum ermitteln der Sortierreihenfolge für u*sort()-Funktionen ...
Ähnliche Funktionen

