Menu
Coddy logo textTech

Łączenie tablic asocjacyjnych

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 15 z 68.

Chociaż array_merge() działa bezproblemowo z tablicami indeksowanymi, jego zachowanie zmienia się znacząco podczas pracy z tablicami asocjacyjnymi. Kluczową różnicą jest sposób obsługi zduplikowanych kluczy tekstowych w łączonych tablicach.

Podczas łączenia tablic asocjacyjnych, jeśli obie tablice zawierają ten sam klucz tekstowy, wartość z późniejszej tablicy nadpisze wartość z wcześniejszej tablicy:

<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Wyświetla: Array ( [theme] => dark [language] => english [notifications] => false )
?>

Zauważ, że „theme” zmieniło się z „light” na „dark”, a „notifications” zmieniło się z true na false, podczas gdy „language” pozostało „english”, ponieważ nie zostało nadpisane. To działanie sprawia, że array_merge() doskonale nadaje się do systemów konfiguracji, w których wartości domyślne mają być nadpisywane preferencjami użytkownika.

Kolejność argumentów ma znaczenie: wartości z tablic wymienionych później w wywołaniu funkcji mają pierwszeństwo przed wcześniejszymi. To zachowanie polegające na nadpisywaniu dotyczy tylko kluczy tekstowych; klucze numeryczne są zawsze ponownie indeksowane kolejno, tak jak w przypadku tablic indeksowanych.

challenge icon

Wyzwanie

Łatwy

Otrzymasz dwa wejścia: tablicę konfiguracji domyślnej i tablicę preferencji użytkownika, obie w formacie JSON. Odczytaj oba wejścia, przekonwertuj każdy ciąg JSON na tablicę asocjacyjną, użyj array_merge(), aby je połączyć (preferencje użytkownika mają nadpisywać wartości domyślne), a następnie wyświetl scaloną konfigurację za pomocą print_r().

Format wejściowy: Dwie linie — każda zawiera obiekt JSON reprezentujący tablicę asocjacyjną (na przykład: {"theme":"light","language":"english"})

Oczekiwany wynik: Scalona tablica konfiguracji, w której preferencje użytkownika nadpisują wartości domyślne, wyświetlona za pomocą print_r()

Spróbuj swoich sił

<?php
// Wczytaj dwa dane wejściowe JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);

// Przekształć ciągi JSON w tablice asocjacyjne
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);

// TODO: Napisz poniżej kod łączący tablice


// Wyświetl połączoną konfigurację
print_r($mergedConfig);
?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator PHP online