studyklar
IProg · Skript 4 · Abschnitt 5

Arrays sortieren und vergleichen: sort, asort, ksort und +

PHP hat mehrere Funktionen zum Sortieren. Sie unterscheiden sich darin, wonach sie sortieren und was mit den Schlüsseln passiert. Rechts wird dasselbe Array auf vier Arten sortiert. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 04, Folien 25 bis 27: Arrays sortieren, Array-Operatoren.

Die Frage: Was machen asort, rsort, ksort und sort mit Werten und Schlüsseln? Und wann sind zwei Arrays gleich?

So gehen wir vor:

  1. Ein Array mit fünf Obstnamen, unsortiert.
  2. Dasselbe Array mit jeder der vier Funktionen sortiert.
  3. Die Array-Operatoren +, ==, === und ihre Verneinungen.
  4. Eine kurze Frage im Stil der Klausur.
Aus Skript 04, Folie 18: Ein PHP-Array ist eine Liste von Paaren aus Schlüssel und Wert. Mit 'k' => 'Kiwi' legt man den Schlüssel selbst fest.

Die Reihenfolge des Einfügens

Skript · Arrays sortieren (Folie 25)

Arrays sind bei PHP eigentlich eine Liste von Schlüssel-Wert-Paaren. Die Reihenfolge entspricht dem Zeitpunkt des Einfügens. Mit Sortierfunktionen kann sie geändert werden.

Ein Array hat eine Reihenfolge: die, in der die Paare eingefügt wurden. print_r zeigt sie unverändert: k, a, u, b, z.

Die Werte sind mit Absicht gemischt: groß und klein geschrieben, ein Umlaut, eine Zahl als String. So sieht man gleich, in welcher Reihenfolge PHP Zeichen sortiert.

asort: nach Werten, Schlüssel bleiben

Werte: 10, Birne, Kiwi, apfel, Äpfel. Schlüssel: z, b, k, a, u.

asort($a) sortiert aufsteigend nach den Werten. Jeder Wert nimmt seinen Schlüssel mit: 10 steht vorn und hat weiter den Schlüssel z. Das a in asort steht für assoziativ.

Zwei Strings vergleicht PHP Zeichen für Zeichen nach ihrem Code im Speicher. Daraus folgt die Reihenfolge der Notiz auf Folie 26: erst Ziffern, dann Großbuchstaben, dann Kleinbuchstaben, zuletzt Umlaute. Darum steht apfel hinter Kiwi.

Ausnahme: Sehen beide Strings wie Zahlen aus, vergleicht PHP sie als Zahlen. "9" kommt dann vor "10". Hier ist '10' der einzige solche String, darum gilt die Zeichenregel.

Merke: Ziffern < Großbuchstaben < Kleinbuchstaben < Umlaute (außer bei zwei Zahlen-Strings).
Noch 10 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

$a = array('k' => 'Kiwi', 'a' => 'apfel', 'u' => 'Äpfel',           'b' => 'Birne', 'z' => '10');print_r($a);
LegendeFünf Obstnamen mit Buchstaben als Schlüssel.