Menu
Coddy logo textTech

Benutzerdefiniertes Sortieren mit 'usort'

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 25 von 68.

Wenn die integrierten Sortierfunktionen von PHP Ihren spezifischen Anforderungen nicht entsprechen, bietet die Funktion usort() die ultimative Flexibilität, indem sie es Ihnen ermöglicht, genau zu definieren, wie Elemente verglichen und geordnet werden sollen. Diese Funktion nimmt Ihr Array und eine von Ihnen geschriebene benutzerdefinierte Vergleichsfunktion entgegen, um die Sortierlogik zu bestimmen.

Die Vergleichsfunktion erhält zwei Elemente aus dem Array und muss eine Ganzzahl zurückgeben: eine negative Zahl, wenn das erste Element vor dem zweiten stehen soll, Null, wenn sie gleich sind, oder eine positive Zahl, wenn das erste nach dem zweiten stehen soll.

<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Ausgabe: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

In diesem Beispiel berechnet die Vergleichsfunktion die Differenz zwischen den String-Längen. Wenn strlen($a) - strlen($b) eine negative Zahl zurückgibt, bedeutet dies, dass der erste String kürzer ist und im sortierten Array an erster Stelle stehen sollte.

Wie andere PHP-Sortierfunktionen modifiziert usort() das ursprüngliche Array direkt. Diese leistungsstarke Funktion eröffnet Möglichkeiten für das Sortieren nach beliebigen Kriterien, die Sie sich vorstellen können – sei es die String-Länge, benutzerdefinierte Geschäftslogik oder komplexe Vergleiche über mehrere Felder.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

Sie erhalten eine Eingabe: ein Array von Produktpreisen im JSON-Format. Lesen Sie die Eingabe ein, konvertieren Sie den JSON-String in ein Array, erstellen Sie eine Vergleichsfunktion, die die Preise in aufsteigender Reihenfolge sortiert, verwenden Sie usort() mit Ihrer Vergleichsfunktion, um das Array zu sortieren, und geben Sie das sortierte Array mit print_r() aus.

Eingabeformat: Eine Zeile, die ein JSON-Array von Zahlen enthält (Beispiel: [29.99,15.50,42.00,8.75,33.25])

Erwartete Ausgabe: Das nach Preis aufsteigend sortierte Array, angezeigt mit print_r()

Spickzettel

Die Funktion usort() ermöglicht benutzerdefiniertes Sortieren, indem sie eine Vergleichsfunktion akzeptiert, die die Sortierlogik definiert.

Die Vergleichsfunktion erhält zwei Elemente und muss Folgendes zurückgeben:

  • Negative Zahl: Das erste Element kommt vor dem zweiten
  • Null: Die Elemente sind gleich
  • Positive Zahl: Das erste Element kommt nach dem zweiten
<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Ausgabe: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

Wie andere PHP-Sortierfunktionen modifiziert usort() das ursprüngliche Array direkt.

Probier es selbst

<?php
// Eingabe lesen
$input = fgets(STDIN);
$prices = json_decode($input, true);

// TODO: Erstellen Sie eine Vergleichsfunktion und verwenden Sie usort(), um das Array zu sortieren

// Das sortierte Array ausgeben
print_r($prices);
?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf