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 erheblich bei der Arbeit mit assoziativen Arrays. Der entscheidende Unterschied besteht darin, wie es mit doppelten String-Schlüsseln zwischen den zusammengeführten Arrays umgeht.
Beim Zusammenführen von assoziativen 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);
// Ausgabe: Array ( [theme] => dark [language] => english [notifications] => false )
?>Beachten Sie, wie „theme“ von „light“ zu „dark“ und „notifications“ von true zu false geändert wurde, während „language“ weiterhin „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 sind, haben Vorrang vor früheren. Dieses Überschreibungsverhalten gilt nur für String-Schlüssel; numerische Schlüssel werden immer sequenziell neu indiziert, genau wie bei indizierten Arrays.
Aufgabe
EinfachSie erhalten zwei Eingaben: ein Standard-Konfigurations-Array und ein Benutzerpräferenz-Array, beide im JSON-Format. Lesen Sie beide Eingaben ein, konvertieren Sie jeden JSON-String in ein assoziatives Array, verwenden Sie array_merge(), um diese zu kombinieren (wobei die Benutzerpräferenzen die Standardwerte überschreiben), und geben Sie 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, angezeigt mittels print_r()
Probier es selbst
<?php
// Die beiden JSON-Eingaben lesen
$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: Schreiben Sie unten Ihren Code, 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