Zu einer effizienten Datenverarbeitung gehören natürlich auch spezielle Funktionen, die es Ihnen ermöglichen, Ihre Daten zu sortieren. Hierfür stellt Ihnen PHP eine mehr als ausreichende Anzahl von Funktionen zur Verfügung.
Einsatz von sort() und rsort()
Diese beiden Funktionen ermöglichen es Ihnen, Ihre indizierten bzw. linearen Arrays auf einfache Art und Weise zu sortieren.
- Die Funktion sort() sortiert ein Array aufsteigend unter Beibehaltung der Zuordnung der Indizes (sort).
- Die Funktion rsort() sortiert ein Array absteigend unter Beibehaltung der Zuordnung der Indizes (reverse sort.)
Beispiel – sort()
<?php
$personen = array (
"Matthias",
"Caroline",
"Gülten",
"Toni"
);
sort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
?>
Ausgabe
0 Caroline
1 Gülten
2 Matthias
3 Toni
Beispiel – rsort()
<?php
$personen = array (
"Matthias",
"Caroline",
"Gülten",
"Toni"
);
rsort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
?>
Ausgabe
0 Toni
1 Matthias
2 Gülten
3 Caroline
Der optionale zweite Parameter sort_flags kann benutzt werden, um das Sortierverhalten mit den folgenden Flags zu beeinflussen.
Flags für Sortiertypen:
- SORT_REGULAR – Vergleiche Einträge normal
- SORT_NUMERIC – Vergleiche Einträge numerisch
- SORT_STRING – Vergleiche Einträge als Strings
Einsatz von asort() und arsort()
Diese beiden Funktionen ermöglichen es Ihnen, Ihre assoziativen Arrays auf einfache Art und Weise zu sortieren.
- Die Funktion asort() sortiert ein Array vorwärts unter Beibehaltung der Zuordnung der Indizes (associative sort).
- Die Funktion arsort() sortiert ein Array rückwärts unter Beibehaltung der Zuordnung der Indizes (associative reverse sort).
Beispiel – asort()
<?php
$personen = array (
"P1"=>"Matthias",
"P2"=>"Caroline",
"P3"=>"Gülten",
"P4"=>"Toni"
);
asort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
?>
Ausgabe
P2 Caroline
P3 Gülten
P1 Matthias
P4 Toni
Beispiel – arsort()
<?php
$personen = array (
"P1"=>"Matthias",
"P2"=>"Caroline",
"P3"=>"Gülten",
"P4"=>"Toni"
);
arsort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
?>
Ausgabe
P4 Toni
P1 Matthias
P3 Gülten
P2 Caroline
Der optionale zweite Parameter sort_flags kann benutzt werden, um das Sortierverhalten mit den folgenden Flags zu beeinflussen. Flags für Sortiertypen:
- SORT_REGULAR – Vergleiche Einträge normal
- SORT_NUMERIC – Vergleiche Einträge numerisch
- SORT_STRING – Vergleiche Einträge als Strings
Einsatz von ksort()
Sollten Sie das Array wieder in die ursprüngliche Reihenfolge bringen wollen, wenden Sie ksort() an. Die Funktion sortiert aufsteigend nach den Schlüsseln.
Beispiel
<?php
$personen = array (
"P1"=>"Matthias",
"P2"=>"Caroline",
"P3"=>"Gülten",
"P4"=>"Toni"
);
arsort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
ksort ($personen);
reset ($personen);
// Ausgabe – Schlüssel und Werte
while (list ($key, $val) = each ($personen)) {
echo "$key $val<br>";
}
?>
Ausgabe
P4 Toni
P1 Matthias
P3 Gülten
P2 Caroline
P1 Matthias
P2 Caroline
P3 Gülten
P4 Toni
Einsatz von usort(), uasort() und uksort()
Sollten Sie Ihre eigene Vorstellung eines sortierten Arrays haben, können Sie die Funktionen usort(), uasort() und uksort() einsetzen. Gegenüber den bereits beschriebenen Variationen können Sie als zusätzlichen Parameter eine Funktion übergeben, die bestimmte Sortiermerkmale festlegt. Die Funktion muss den Sortiervorgang nach folgendem Schema durch Rückgabe eines bestimmten Code steuern:
- 0 – Zwei miteinander verglichene Werte sind gleich.
- 1 – Der zweite Parameter ist größer als der erste.
- -1 – Der erste Parameter ist größer als der zweite.
Entsprechend interpretiert PHP beim Sortiervorgang dies als Einordnungskriterium.
Beispiel – aufsteigend
<?php
$personen = array (
"ma"=>"Matthias",
"ca"=>"Caroline",
"gü"=>"Gülten",
"to"=>"Toni",
"mi"=>"Maria",
"do"=>"Doro"
);
function vergleich($a, $b) {
if ($a == $b) return 0;
elseif ($a > $b) return 1;
else return -1;
}
uksort($personen, vergleich);
// Ausgabe
foreach($personen as $key=>$element) {
echo "$key: $element<br>";
}
?>
Ausgabe
ca: Caroline
do: Doro
gü: Gülten
ma: Matthias
mi: Maria
to: Toni
Beispiel – absteigend
<?php
$personen = array (
"ma"=>"Matthias",
"ca"=>"Caroline",
"gü"=>"Gülten",
"to"=>"Toni",
"mi"=>"Maria",
"do"=>"Doro"
);
function vergleich($a, $b) {
if ($a == $b) return 0;
elseif ($a > $b) return -1;
else return 1;
}
uksort($personen, vergleich);
// Ausgabe
foreach($personen as $key=>$element) {
echo "$key: $element<br>";
}
?>
Ausgabe
to: Toni
mi: Maria
ma: Matthias
gü: Gülten
do: Doro
ca: Caroline
|