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 Ausgabe.
1 <?php
2 $array1 = $array2 = array("bild12.gif", "bild10.gif", "bild2.gif", "bild1.gif");
3
4 sort($array1);
5 echo "Standart";
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
Standartmethode 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.
weiter if Anweisung in Php
|