Arrays mit von PHP zur verfügung gestellten Funktionen sortierenSie befinden sich: Home > Php > Arrays sortieren
Um Arrays sortieren zu können bietet PHP einige sehr komfortable Funktionen
an. Da diese Funktionen praktisch selbsterklärend sind folgen ein paar Beispiele
mit den dazugehörigen Ausgaben.
1 <?php
2 $array1 = $array2 = array("bild12.gif", "bild10.gif", "bild2.gif", "bild1.gif");
3
4 sort($array1);
5 echo "Standard";
6 print_r($array1);
7
8 natsort($array2);
9 echo "natürlich";
10 print_r($array2);
11 ?>
|
Dieses Programm liefert folgende Ausgabe :
Standard
Array
(
[0] => bild1.gif
[1] => bild10.gif
[2] =>
bild12.gif
[3] => bild2.gif
)
natürlich
Array
(
[3] => bild1.gif
[2] => bild2.gif
[1] =>
bild10.gif
[0] => bild12.gif
)
Es ist einfach zu erkennen das die natürliche Sortierung einer im Alltag
üblichen gleicht. Betriebsysteme sortieren gelegentlich Dateien nach der
Standardmethode so das es Anfängern oft schwer fällt Dateien zu finden.
Um Arrays sortieren zu können die über Feldindizes verfügen findet die
Funktion sort(); anwendung.
1 <?php
2 $text = array("Ich", "bin", "ein", "testtext");
3 sort($text);
4 //rsort($text); // Siehe Text
5 foreach ($text as $key => $val) {
6 echo "text[" . $key . "] = " . $val;
7 }
8 ?>
|
Das
sortierte Array würde wie folgt ausgegeben
text[0] = bin
text[1] = ein
text[2] = Ich
text[3] = testtext
Die Funktion kann rekursiv verwendet werden, hierzu wird rsort(); verwendet.
Für das sort(); Beispiel sähe die Ausgabe dann so aus:
text[0] = testtext
text[1] = Ich
text[2] = ein
text[3] = bin
Da PHP die Möglichkeit bietet assoziative Feldindizes zu verwenden gibt es
eine spezielle Funktion ( inclusive einer rekursiven Funktion ) um diese zu
sortieren:
1 <?php
2 $text = array("d"=>"Ich", "a"=>"bin", "c"=>"ein", "b"=>"testtext");
3 ksort($text);
4 //krsort($text); // Siehe Text
5 foreach ($text as $key => $val) {
6 echo "text[" . $key . "] = " . $val;
7 }
8 ?>
|
Sortiert ausgegeben :
a = bin
b = testtext
c = ein
d = Ich
Rekursiv mit krsort();
d = Ich
c = ein
b = testtext
a = bin
Grade bei Verwendung von assoziativen Arrays kommt es häufiger vor das nicht
nach Indizes sortiert werden soll, sondern nach den Feldinhalten selber. Um dies
zu erreichen verwendet man asort(); oder rekursiv arsort();
1 <?php
2 $text = array("d"=>"Ich", "a"=>"bin", "c"=>"ein", "b"=>"testtext");
3 asort($text);
4 //arsort($text); // Siehe Text
5 foreach ($text as $key => $val) {
6 echo "text[" . $key . "] = " . $val;
7 }
8 ?>
|
Sortiert ausgegeben :
a = bin
c = ein
d = Ich
b = testtext
Rekursiv mit krsort();
d = testtext
b = Ich
c = ein
a = bin
Eine Beschreibung der Funktionen uksort(); und uasort();, die ebenfalls von
PHP bereit gestellt werden, bei denen man eigene Algorithmen angeben kann nach
denen die Arrays sortiert werden sollen, würden den Rahmen dieser Abhandlung
sprengen, zumal hierfür Funktionsprototypen geschrieben werden
müssten.
Man kann ein Array auch über einen so genannten Bubblesort sortieren. Dieser verbraucht aber Ressourcen und man sollte lieber die von PHP zur Verfügung gestellten Funktionen verwenden. Wenn sie noch weitere Fragen zu der Sortierung von einen Array haben, so können sie direkt in unserem Forum eine Frage stellen.
weiter if Anweisung in Php
|