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 deine spezifischen Anforderungen nicht erfüllen, bietet die Funktion usort() ultimative Flexibilität, da du genau festlegen kannst, wie Elemente verglichen und angeordnet werden sollen. Diese Funktion nimmt dein Array und eine benutzerdefinierte Vergleichsfunktion entgegen, die du schreibst, 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 comparison-Funktion den Unterschied zwischen den String-Längen. Wenn strlen($a) - strlen($b) eine negative Zahl zurückgibt, bedeutet das, dass der erste String kürzer ist und im sortierten array zuerst kommen sollte.

Wie andere PHP-Sortierfunktionen verändert usort() das ursprüngliche array direkt. Diese leistungsstarke Funktion eröffnet Möglichkeiten zum Sortieren nach beliebigen Kriterien, die du dir vorstellen kannst, sei es nach der Zeichenfolgenlänge, einer benutzerdefinierten Geschäftslogik oder komplexen Vergleichen mehrerer Felder.

challenge icon

Aufgabe

Einfach

Du erhältst eine Eingabe: ein Array von Produktpreisen im JSON-Format. Lies die Eingabe ein, wandle die JSON-Zeichenkette in ein Array um, erstelle eine Vergleichsfunktion, die die Preise in aufsteigender Reihenfolge sortiert, verwende usort() mit deiner Vergleichsfunktion, um das Array zu sortieren, und gib das sortierte Array mit print_r() aus.

Eingabeformat: Eine Zeile mit einem JSON-Array aus Zahlen (Beispiel: [29.99,15.50,42.00,8.75,33.25])

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

Probier es selbst

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

// TODO: Erstelle eine Vergleichsfunktion und verwende 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

Übe selbstständig: Online-PHP-Compiler