Łą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.
Wyzwanie
ŁatwyOtrzymasz 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);
?>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
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online