Arrays mit von PHP zur verfügung gestellten Funktionen sortieren
Sie 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.
<?php
$array = $array2 = array("bild12.gif", "bild10.gif",
"bild2.gif", "bild1.gif");
sort($array);
echo "<i>Ausgabe von \$array, Standard mit sort()</i><br>";
echo '<pre>',print_r($array,true),'</pre>';
natsort($array2);
echo "<br><i>Beispiel von \$array2, natürlich
mit natsort()</i><br>";
echo '<pre>',print_r($array2,true),'</pre>';
?>
Dieses Programm liefert folgende Ausgabe :
Ausgabe von $array, Standard mit sort() Array
(
[0] => bild1.gif
[1] => bild10.gif
[2] => bild12.gif
[3] => bild2.gif
)
Beispiel von $array2, natürlich mit natsort() 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. Im nachfolgenden Beispiel verwende ich eine
foreach Schleife um
das Array auszugeben.
Beispiel mit sort():
Sortierung von kleiner nach größer auf den Feldinhalten bezogen und
Schlüsselassoziationen werden nicht beibehalten.
<?php
$text = array("Ich", "bin", "ein", "testtext");
sort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Das sortierte Array würde wie folgt ausgegeben.
Ausgabe mit sort():
text[0] = Ich text[1] = bin text[2] = ein text[3] = testtext
Um rekursiv zu sortieren, wird die PHP Funktion rsort() verwendet.
Beispiel für rsort():
Sortierung von größer nach kleiner auf den Feldinhalten bezogen und
Schlüsselassoziationen werden nicht beibehalten.
<?php
$text = array("Ich", "bin", "ein", "testtext");
rsort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Für das rsort() Beispiel sähe die Ausgabe dann so aus.
Die Ausgabe mit rsort():
text[0] = testtext text[1] = ein text[2] = bin text[3] = Ich
Da PHP die Möglichkeit bietet assoziative Feldindizes zu verwenden gibt es
eine spezielle Funktion ( inclusive einer rekursiven Funktion ) um diese zu
sortieren.
Beispiel mit ksort():
Array sortiert von kleiner nach größer auf die Feldindizes bezogen und
Schlüsselassoziationen werden beibehalten.
<?php
$text = array("d"=>"Ich", "a"=>"bin",
"c"=>"ein", "b"=>"testtext");
ksort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Sortiert ausgegeben mit ksort():
text[a] = bin text[b] = testtext text[c] = ein text[d] = Ich
Beispiel mit krsort():
Array sortiert von größer nach kleiner auf die Feldindizes bezogen und
Schlüsselassoziationen werden beibehalten.
<?php
$text = array("d"=>"Ich", "a"=>"bin",
"c"=>"ein", "b"=>"testtext");
krsort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Rekursiv Ausgabe mit krsort():
text[d] = Ich text[c] = ein text[b] = testtext text[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()
Beispiel mit asort():
Sortierung von kleiner nach größer auf den Feldinhalten bezogen und
Schlüsselassoziationen werden beibehalten.
<?php
$text = array("d"=>"Ich", "a"=>"bin",
"c"=>"ein", "b"=>"testtext");
asort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Sortiert ausgegeben mit asort():
text[d] = Ich text[a] = bin text[c] = ein text[b] = testtext
Beispiel mit arsort():
Sortierung von größer nach kleiner auf den Feldinhalten bezogen und
Schlüsselassoziationen werden beibehalten.
<?php
$text = array("d"=>"Ich", "a"=>"bin",
"c"=>"ein", "b"=>"testtext");
arsort($text);
foreach ($text as $key => $val) {
echo "text[" . $key . "] = " . $val.'<br>';
}
?>
Rekursiv Ausgabe mit arsort():
text[b] = testtext text[c] = ein text[a] = bin text[d] = Ich
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 Vergleichsfunktionen 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 Ihre Frage stellen.
Auf der nachfolgenden Seite wird Ihnen erklärt, wie Sie ein mehrdimensionales
Array sortieren können. Es wird hierzu die PHP Function array_multisort() verwendet.
weiter if Anweisung in Php
|