W języku PHP tablica utworzona zapisem
$t = array('a', 'b', 'c');to tablica, w której
A. istnieją przynajmniej dwa wymiary.
B. indeks jest dowolnym napisem.
C. w każdej komórce tablicy przechowywana jest inna tablica.
D. indeksami są liczby całkowite, numerowane od 0.
W zapisie $t = array('a', 'b', 'c'); tworzona jest zwykła tablica indeksowana numerycznie. W PHP, jeżeli przy elementach tablicy nie podasz własnych kluczy, interpreter sam nadaje im indeksy całkowite, zaczynając od 0. Czyli w praktyce powstaje struktura: $t[0] ma wartość 'a', $t[1] ma wartość 'b', a $t[2] ma wartość 'c'. To jest bardzo ważne przy pracy z pętlami, formularzami i listami danych, bo większość operacji na takich tablicach zakłada właśnie numerację od zera. Moim zdaniem to jedna z tych podstaw PHP, które trzeba dobrze wyczuć, bo potem pojawia się przy foreach, count(), sortowaniu czy odczytywaniu danych z bazy. Warto też pamiętać, że tablica w PHP technicznie jest uporządkowaną mapą, więc może mieć klucze liczbowe i tekstowe, ale w tym konkretnym zapisie klucze nie zostały jawnie podane. Zgodnie z typowym zachowaniem języka PHP zostaną więc automatycznie utworzone indeksy 0, 1 i 2. Dobra praktyka jest taka, żeby przy tablicach listowych korzystać z indeksów liczbowych, a przy danych opisowych, na przykład użytkownik, email, rola, używać kluczy tekstowych.
W tym przykładzie nie powstaje tablica wielowymiarowa, tylko prosta tablica jednowymiarowa zawierająca trzy wartości tekstowe. Częsty błąd polega na tym, że ktoś widzi kilka elementów w nawiasach i od razu kojarzy to z większą strukturą danych, ale liczba elementów nie oznacza liczby wymiarów. Tablica wielowymiarowa w PHP pojawiłaby się dopiero wtedy, gdyby jej elementami były inne tablice, na przykład $t = array(array('a'), array('b'));. Tutaj komórki tablicy przechowują napisy 'a', 'b' i 'c', a nie kolejne tablice, więc nie ma mowy o przynajmniej dwóch wymiarach. Nie jest też poprawne założenie, że indeks jest dowolnym napisem. PHP faktycznie pozwala tworzyć tablice asocjacyjne z kluczami tekstowymi, na przykład $user = array('name' => 'Jan', 'email' => '[email protected]');, ale trzeba te klucze jawnie podać. W zapisie array('a', 'b', 'c') żadnych nazw kluczy nie ma, więc PHP automatycznie przypisuje kolejne indeksy całkowite od 0. Z mojego doświadczenia wynika, że najwięcej pomyłek bierze się z mieszania dwóch pojęć: tablicy indeksowanej i tablicy asocjacyjnej. Obie są w PHP obsługiwane przez ten sam typ array, ale sposób ich tworzenia i odczytu jest inny. W praktyce trzeba patrzeć nie tylko na słowo array, ale też na to, czy przy wartościach występuje operator =>. Jeśli go nie ma, zwykle mamy listę numerowaną automatycznie.