Assoziative Arrays nach Wert sortieren
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 22 von 68.
Beim Arbeiten mit assoziativen Arrays müssen Sie diese oft nach ihren Werten sortieren, während die Schlüssel-Wert-Beziehungen erhalten bleiben. PHP bietet für diesen Zweck zwei spezialisierte Funktionen an: asort() für aufsteigende Sortierung und arsort() für absteigende Sortierung.
Hier erfahren Sie, wie asort() funktioniert, um nach Werten in aufsteigender Reihenfolge zu sortieren:
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Outputs: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>Beachten Sie, wie die Noten nun vom niedrigsten zum höchsten Wert geordnet sind, aber der Name jedes Schülers korrekt mit seiner Note verknüpft bleibt. Dies ist der entscheidende Vorteil von asort() gegenüber dem regulären sort()—es behält die Zuordnung zwischen Schlüsseln und Werten bei.
Für eine absteigende Sortierung funktioniert arsort() ähnlich, ordnet die Werte jedoch von höchstem zu niedrigstem an:
<?php
arsort($students);
print_r($students);
// Ausgabe: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Beide Funktionen verändern das ursprüngliche Array direkt, genau wie ihre Gegenstücke für indizierte Arrays. Dies macht sie ideal für die Organisation von Daten wie Schülernoten, Produktpreisen oder jedes Szenario, in dem Sie nach Werten sortieren müssen, während die Schlüssel-Wert-Paare intakt bleiben.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachSie erhalten eine Eingabe: ein assoziatives Array mit Mitarbeiternamen und deren Gehältern im JSON-Format. Lesen Sie die Eingabe ein, konvertieren Sie den JSON-String in ein Array, verwenden Sie arsort(), um die Mitarbeiter nach Gehalt in absteigender Reihenfolge (vom höchsten zum niedrigsten) zu sortieren, und geben Sie das sortierte Array mit print_r() aus.
Eingabeformat: Eine Zeile, die ein JSON-Objekt mit Mitarbeiternamen als Schlüsseln und Gehältern als Werten enthält (Beispiel: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})
Erwartete Ausgabe: Das sortierte assoziative Array in absteigender Reihenfolge nach Gehaltswerten, angezeigt mittels print_r()
Spickzettel
Verwenden Sie asort(), um assoziative Arrays nach Werten in aufsteigender Reihenfolge zu sortieren, während die Schlüssel-Wert-Beziehungen beibehalten werden:
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Ausgabe: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>Verwenden Sie arsort(), um assoziative Arrays nach Werten in absteigender Reihenfolge zu sortieren:
<?php
arsort($students);
print_r($students);
// Ausgabe: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Beide Funktionen ändern das ursprüngliche Array direkt und behalten die Zuordnung zwischen Schlüsseln und Werten bei, im Gegensatz zum regulären sort().
Probier es selbst
<?php
// Eingabe lesen
$input = fgets(STDIN);
// JSON in assoziatives Array umwandeln
$employees = (array)json_decode($input, true);
// TODO: Schreiben Sie Ihren Code unten, um das Array nach Gehalt absteigend zu sortieren
// Das sortierte Array ausgeben
print_r($employees);
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung