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.
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 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()
Spickzettel
Beim Zusammenführen von assoziativen Arrays mit array_merge() werden doppelte String-Schlüssel durch Werte aus späteren Arrays überschrieben:
<?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 )
?>Wichtige Verhaltensweisen:
- String-Schlüssel mit demselben Namen: Werte aus späteren Arrays überschreiben frühere
- Die Reihenfolge ist wichtig: Später aufgeführte Arrays haben Vorrang
- Numerische Schlüssel werden immer sequenziell neu indiziert
- Ideal für Konfigurationssysteme mit Standardwerten und Benutzerüberschreibungen
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