W aplikacjach internetowych tablice asocjacyjne to tablice, w których
A. indeks jest łańcuchem tekstowym.
B. elementy tablicy są zawsze indeksowane od 0.
C. istnieją przynajmniej dwa wymiary.
D. w każdej komórce tablicy przechowywana jest inna tablica.
Pytanie z egzaminu CKE, czerwiec 2019 (arkusz E.14-X-19.06).
Tablice asocjacyjne to takie struktury danych, w których dostęp do elementu odbywa się przez nazwany klucz, najczęściej będący łańcuchem tekstowym, a nie przez kolejny numer pozycji. W praktyce zamiast odwoływać się do elementu o indeksie 0 albo 1, używa się kluczy opisujących znaczenie danych, np. login, email, cena, id_uzytkownika. To jest bardzo wygodne w aplikacjach internetowych, bo dane rzadko są tylko listą bez znaczenia. Częściej opisują użytkownika, produkt, formularz albo rekord pobrany z bazy danych. W PHP tablica typu ['login' => 'anna', 'rola' => 'admin'] jest klasycznym przykładem tablicy asocjacyjnej. W JavaScript podobną rolę bardzo często pełnią obiekty, np. daneUzytkownika.login, chociaż technicznie tablice JS są głównie indeksowane liczbowo. Dobra praktyka jest taka, żeby klucze nazywać czytelnie i konsekwentnie, bo potem kod łatwiej utrzymać, debugować i przekazywać dalej w JSON. Moim zdaniem to jedna z tych rzeczy, które wydają się proste, ale mocno poprawiają jakość kodu w realnym projekcie.
W tym pytaniu chodzi o rozróżnienie kilku podobnych, ale jednak innych pojęć związanych z tablicami. Tablica asocjacyjna nie oznacza automatycznie tablicy indeksowanej od 0. Indeksowanie od 0 jest typowe dla zwykłych tablic sekwencyjnych, czyli takich, gdzie elementy mają pozycje liczbowe: 0, 1, 2, 3 i tak dalej. Tak działają na przykład standardowe listy wartości, gdzie ważna jest kolejność elementów, a nie ich nazwa. W tablicy asocjacyjnej ważniejszy jest klucz opisowy, czyli np. nazwa, email, status albo cena_netto. Częsty błąd polega na tym, że ktoś kojarzy każdą tablicę z numerkami, bo tak najczęściej zaczyna się naukę programowania. No i potem łatwo przeoczyć, że klucz może być tekstem. Tablica przechowująca w każdej komórce inną tablicę to już inna konstrukcja, zwykle nazywana tablicą zagnieżdżoną albo tablicą wielowymiarową. Może być używana np. do przechowywania listy użytkowników, gdzie każdy użytkownik ma własny zestaw danych. Ale samo zagnieżdżenie nie definiuje tablicy asocjacyjnej. Podobnie wymóg co najmniej dwóch wymiarów dotyczy tablic wielowymiarowych, a nie asocjacyjnych. Tablica asocjacyjna może być całkiem płaska i mieć tylko jeden poziom, np. opis jednego produktu w sklepie internetowym. W praktyce w aplikacjach webowych te pojęcia często się łączą, bo można mieć tablicę wielowymiarową, której elementy są tablicami asocjacyjnymi. Jednak definicja nadal opiera się na kluczach tekstowych, a nie na liczbie wymiarów czy przechowywaniu kolejnych tablic w środku.