Sortieren von Arrays in PHP: sort, rsort, asort, ksort
Es gibt einige Funktionen bei PHP, um Arrays zu sortieren:
sort
(engl. sortieren) sortiert ein Array nach dem Wert aufsteigend
rsort
(engl. reverse sort - umgekehrte Sortierung) - sortiert ein Array nach dem Wert absteigend
<?php
$betriebssystem[] = "Windows";
$betriebssystem[] = "Linux";
$betriebssystem[] = "Solaris";
sort ( $betriebssystem );
$anzahl = count ( $betriebssystem );
echo "Es gibt $anzahl Einträge:";
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++ )
{
echo "<li>Eintrag von $x ist $betriebssystem[$x] </li>";
}
echo "<pre>";
print_r ($betriebssystem );
?>
Der Befehl print_r
bewirkt eine komplette Ausgabe des Inhalts einer Variable, bzw. eines Arrays. Es ist eine gute Idee, davor durch ein <pre> eine preformatierte (Ausgabe aller Leerzeichen und Umbrüche) zu erzwingen.
Beachten Sie die Indizes. Bei sort
und rsort
werden die ursprünglichen Indizes aufgehoben.
Aufgabe: sort
und Indizes
Zeigen Sie, dass sich die Indizes durch die Nutzung von sort
ändern.
Sortierung von Arrays mit Beibehalten der Indizes
Im Gegensatz zu sort
bleibt die Zuordnung des Index erhalten. D.h. wenn z. B. vor dem Sortieren ein Eintrag die Index-Nummer 2 hat, hat dieser auch nach dem Sortieren noch dieselbe Index-Nummer.
asort
sortiert ein Array nach dem Wert aufsteigend, Indexverbindungen werden beibehalten
arsort
wie sort
, nur absteigend
<?php
$betriebssystem[] = "Windows";
$betriebssystem[] = "Linux";
$betriebssystem[] = "Solaris";
asort ( $betriebssystem );
$anzahl = count ( $betriebssystem );
echo "Es gibt $anzahl Einträge:";
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++ )
{
echo "<li>Eintrag von $x ist $betriebssystem[$x] </li>";
}
echo "<pre>";
print_r ($betriebssystem );
?>
sortiert das Array nach dem Index
ksort
sortiert das Array nach dem Index
krsort
wie ksort
, nur absteigend
Dies macht natürlich bei "Assoziativem Array" oft mehr Sinn.
<?php
$betriebssystem[4] = "Windows";
$betriebssystem[9] = "Linux";
$betriebssystem[1] = "Solaris";
ksort ( $betriebssystem );
$anzahl = count ( $betriebssystem );
echo "Es gibt $anzahl Einträge:";
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++ )
{
echo "<li>Eintrag von $x ist $betriebssystem[$x] </li>";
}
echo "<pre>";
print_r ($betriebssystem );
?>
Aufgabe
Warum klappt bei dem letzten Beispiel die Aufzählung der Betriebssysteme nicht? Bei der Ausgabe kommen 2-mal leere Werte!
Korrigieren Sie das Beispiel.
Aufgabe:
Lassen Sie die Autokennzeichenkürzel und die Städte für
- B - Berlin
- S - Stuttgart
- TÜ - Tübingen
- M - München
- MZ - Mainz
über ein assoziatives Array in folgenden Sortierungen ausgeben:
- sort
- rsort
- ksort
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: