Tablica wielowymiarowa to tablica, której elementami są tablice. Odczytujesz ją jedną parą nawiasów na każdy poziom: $grid[1][2] to wiersz 1, kolumna 2, a $users[0]['name'] to imię w pierwszym rekordzie.
Drugi kształt, lista rekordów z nazwanymi polami, spotkasz najczęściej: zwykle daje go zapytanie do bazy danych, zdekodowana odpowiedź JSON albo przetworzony plik CSV. Każdy rekord jest tablicą asocjacyjną.
Tworzenie tablic zagnieżdżonych
Zagnieżdżenie może być tak głębokie, jak trzeba, a poziomy mogą łączyć klucze liczbowe i tekstowe. Częsty przykład to tablica konfiguracji: nazwane sekcje, z których każda zawiera ustawienia lub listy.
Dodawanie wierszy i zagnieżdżonych wartości
$rows[] = [...] dopisuje cały wiersz. $arr['key'][] = $value dopisuje do zagnieżdżonej listy, a PHP tworzy wewnętrzną tablicę przy pierwszym użyciu, więc grupowanie wartości nie wymaga przygotowań.
Przechodzenie po tablicy wielowymiarowej
Użyj jednego foreach na każdy poziom. Dla listy rekordów zwykle wystarczy jedna pętla, bo pola odczytujesz po nazwie. Dla siatki pętla wewnętrzna przechodzi po komórkach każdego wiersza.
Budowanie tabeli HTML z tablicy
Tablica wierszy przekłada się bezpośrednio na tabelę HTML: klucze pierwszego wiersza stają się nagłówkiem, a każdy wiersz staje się <tr>. Uruchom, a zakładka Page pokaże wyrenderowaną tabelę; zmień wartość albo dodaj wiersz i uruchom ponownie.
Forma foreach (...): ... endforeach; to ta sama pętla zapisana dla szablonów, dzięki czemu HTML pozostaje czytelny.
Jedna kolumna ze wszystkich wierszy
array_column() wyciąga jedno pole z każdego wiersza do płaskiej listy. Podaj trzeci argument, aby kluczami wyniku było inne pole: tak lista rekordów zamienia się w tablicę do wyszukiwania.
Sortowanie wierszy po polu
usort() sortuje wiersze funkcją porównującą. Operator statku kosmicznego <=> zwraca -1, 0 albo 1, czyli dokładnie to, czego oczekuje usort(). Zamień $a i $b, aby sortować malejąco.
count($players, COUNT_RECURSIVE) liczy 3 wiersze plus 6 pól w ich wnętrzu, dlatego wypisuje 9.
Częsty błąd: odczyt głębokiego klucza, którego może brakować
Odczyt $config['cache']['ttl'], gdy nie ma klucza cache, wypisuje Warning: Undefined array key "cache", a dla kolejnego poziomu Warning: Trying to access array offset on null. Operator ?? sprawdza cały łańcuch naraz i nigdy nie ostrzega, więc to bezpieczny sposób odczytu opcjonalnych zagnieżdżonych wartości.
Najczęściej zadawane pytania
Jak odczytać wartość z tablicy wielowymiarowej w PHP?
Dodaj jedną parę nawiasów na każdy poziom: $matrix[1][0] to wiersz 1, kolumna 0, a $users[0]['email'] to e-mail pierwszego użytkownika. Każdy nawias czyta z tablicy zwróconej przez poprzedni.
Jak przejść po tablicy wielowymiarowej w PHP?
Zagnieźdź po jednym foreach na poziom: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Dla tablicy rekordów zwykle wystarczy jedna pętla, a pola odczytujesz po nazwie: $row['name'].
Jak dodać element do tablicy wielowymiarowej?
Dopisz cały wiersz przez $rows[] = ['name' => 'Linus', 'age' => 54]; albo dopisz do zagnieżdżonej tablicy przez $groups['admins'][] = 'Grace';. PHP tworzy wewnętrzną tablicę, jeśli klucz jeszcze nie istnieje.
Jak utworzyć tablicę 2D wypełnioną zerami w PHP?
Zagnieźdź dwa wywołania array_fill(): $grid = array_fill(0, 3, array_fill(0, 4, 0)); daje 3 wiersze po 4 zera. Każdy wiersz jest osobną kopią, więc $grid[0][0] = 5; zmienia tylko pierwszy wiersz.