Assoziative Arrays zusammenführen
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy. Lektion 15 von 68.
Während array_merge() nahtlos mit indizierten Arrays funktioniert, ändert sich sein Verhalten bei der Arbeit mit assoziativen Arrays erheblich. Der entscheidende Unterschied besteht darin, wie es doppelte Zeichenfolgenschlüssel zwischen den zusammenzuführenden Arrays behandelt.
Beim Zusammenführen assoziativer Arrays überschreibt der Wert aus dem späteren Array den Wert aus dem früheren Array, wenn beide Arrays denselben String-Schlüssel enthalten:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>Beachte, wie sich „theme“ von „light“ zu „dark“ geändert hat und „notifications“ von true zu false geändert wurde, während „language“ „english“ blieb, da es nicht überschrieben wurde. Dieses Verhalten macht array_merge() perfekt für Konfigurationssysteme, in denen Standardwerte durch Benutzereinstellungen überschrieben werden sollen.
Die Reihenfolge der Argumente ist wichtig: Werte aus arrays, die später im Funktionsaufruf aufgeführt werden, haben Vorrang vor früheren Werten. Dieses Überschreibverhalten gilt nur für Schlüssel vom Typ String; numerische Schlüssel werden immer sequenziell neu indiziert, genau wie bei indizierten arrays.
Aufgabe
EinfachDu erhältst zwei Eingaben: ein Standardkonfigurations-Array und ein Benutzerpräferenzen-Array, beide im JSON-Format. Lies beide Eingaben ein, wandle jeden JSON-String in ein assoziatives Array um, verwende array_merge(), um sie zu kombinieren (wobei die Benutzerpräferenzen die Standardwerte überschreiben), und gib die zusammengeführte Konfiguration mit print_r() aus.
Eingabeformat: Zwei Zeilen – jede Zeile enthält ein JSON-Objekt, das ein assoziatives Array darstellt (Beispiel: {"theme":"light","language":"english"})
Erwartete Ausgabe: Das zusammengeführte Konfigurations-Array, bei dem die Benutzerpräferenzen die Standardwerte überschreiben, ausgegeben mit print_r()
Probier es selbst
<?php
// Die beiden JSON-Eingaben einlesen
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// JSON-Strings in assoziative Arrays umwandeln
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Schreibe deinen Code darunter, um die Arrays zusammenzuführen
// Die zusammengeführte Konfiguration ausgeben
print_r($mergedConfig);
?>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Übe selbstständig: Online-PHP-Compiler