Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

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