Menu

Tablice wielowymiarowe w PHP: zagnieżdżanie i pętle

Tablica wielowymiarowa w PHP to tablica, której elementami są tablice; odczytujesz ją jedną parą nawiasów na poziom: $grid[1][2] albo $users[0]['name']. Dowiedz się, jak tworzyć tablice zagnieżdżone, czytać i zmieniać głębokie wartości, używać zagnieżdżonego foreach, zbudować tabelę HTML, wyciągnąć kolumnę i sortować wiersze.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ