Freaky Friday: Nach Alphabet sortieren

Es ist wieder soweit. Freaky Friday! Auch heute gibt es wieder einen kleinen Codeschnipsel, der Euch ein bisschen weiter bringen sollte. Zumindest hat mich die alphabetische Sortierung von Strings mit PHP mal vor eine mittelgroße Herausforderung gestellt. Heute gibt es mal einen objektorientierten Lösungsansatz.

Wie wir wahrscheinlich schon wissen, können wir mit den Heap Klassen der SPL Zahlen automatisch auf- oder absteigend sortieren lassen. Aber was ist mit Wörtern? Wie können wir Strings auf- oder absteigend automatisiert sortieren lassen? Geht das auch mit den Heap Klassen der SPL? Ja, das geht.

class MyStringHeap extends SplMinHeap {
    public function compare($a, $b) {
        return strcmp($b, $a);
    }
}

$heap = new MyStringHeap();
$heap->insert('Max');
$heap->insert('Kris');
$heap->insert('Marcel');

foreach ($heap as $name) {
    echo $name . ", ";
}

// Ausgabe: Kris, Marcel, Max

Kurz erklärt: Um die Namen Max, Kris und Marcel aufsteigend sortieren zu lassen, leiten wir die Klasse MyStringHeap von der Klasse SplMinHeap ab. Die Klasse SplMinHeap sortiert normalerweise Zahlen aufsteigend. Um nun Strings alphabetisch aufsteigend sortieren zu lassen, überschreiben wir einfach die compare Methode und lassen uns mittels der Funktion strcmp die String Vergleichswerte zurückgeben. Fertig! Schon haben wir eine Klasse, die uns Strings alphabetisch aufsteigend sortiert.

Haben wir wieder was gelernt!
Ich wünsche Euch ein schönes Pfingswochenende.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.