Menu
Coddy logo textTech

Assoziative Arrays nach Wert sortieren

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

Bei der Arbeit mit assoziativen Arrays musst du sie oft nach ihren Werten sortieren und dabei die Schlüssel-Wert-Beziehungen beibehalten. PHP stellt dafür zwei spezialisierte Funktionen bereit: asort() für aufsteigende Reihenfolge und arsort() für absteigende Reihenfolge.

So funktioniert asort(), um nach Werten in aufsteigender Reihenfolge zu sortieren:

<?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 )
?>

Beachte, wie die Noten jetzt vom niedrigsten zum höchsten Wert angeordnet sind, aber der Name jedes Schülers weiterhin korrekt seiner Note zugeordnet bleibt. Dies ist der entscheidende Vorteil von asort() gegenüber dem regulären sort(). Die Zuordnung zwischen Schlüsseln und Werten bleibt erhalten.

Für die Reihenfolge descending funktioniert arsort() ähnlich, ordnet die Werte jedoch vom höchsten zum niedrigsten an:

<?php
arsort($students);
print_r($students);
// Ausgabe: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

Beide Funktionen ändern das ursprüngliche array direkt, genau wie ihre Gegenstücke für indizierte arrays. Dadurch eignen sie sich perfekt zum Organisieren von Daten wie Schülernoten, Produktpreisen oder für jedes Szenario, in dem du nach Wert sortieren musst, während die Schlüssel-Wert-Paare intakt bleiben.

challenge icon

Aufgabe

Einfach

Du erhältst eine Eingabe: ein assoziatives Array mit den Namen der Angestellten und ihren Gehältern im JSON-Format. Lies die Eingabe ein, wandle den JSON-String in ein Array um, verwende arsort(), um die Angestellten nach Gehalt in absteigender Reihenfolge (vom höchsten zum niedrigsten) zu sortieren, und gib das sortierte Array mit print_r() aus.

Eingabeformat: Eine Zeile mit einem JSON-Objekt, in dem die Namen der Angestellten als Schlüssel und die Gehälter als Werte angegeben sind (Beispiel: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

Erwartete Ausgabe: Das sortierte assoziative Array in absteigender Reihenfolge nach den Gehaltswerten, angezeigt mit print_r()

Probier es selbst

<?php
// Eingabe lesen
$input = fgets(STDIN);

// JSON in assoziatives Array umwandeln
$employees = (array)json_decode($input, true);

// TODO: Schreibe deinen Code darunter, um das Array nach Gehalt in absteigender Reihenfolge zu sortieren


// Das sortierte Array ausgeben
print_r($employees);
?>
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