Sortierung

Aus php bar

Wechseln zu: Navigation, Suche

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


Arrays mischen

Persönliche Werkzeuge