Tablice wielowymiarowe PHP to struktury danych, które są tablicami zawierającymi jako elementy inne tablice. W PHP można tworzyć tablice dwuwymiarowe, trójwymiarowe itd., chociaż w praktycznym użyciu spotyka się raczej maksymalnie tablice trójwymiarowe. Przy większej liczbie wymiarów zaczyna boleć głowa od myślenia…
W tym rozdziale między innymi nauczysz się tworzyć tablice wielowymiarowe PHP, poznasz najczęściej używane funkcje do pracy z nimi, dowiesz się, jakie mają cechy, jak uzyskiwać dostęp do ich elementów, jak dodawać i usuwać w nich elementy i wiele więcej.
Oto niektóre z pytań, na które odpowiedzi znajdziesz na tej stronie:
- Do czego można używać tablic wielowymiarowych w PHP?
- Jak utworzyć tablicę wielowymiarową w PHP?
- Jak wydrukować zawartość tablicy wielowymiarowej na stronie?
- Jak uzyskiwać dostęp do elementów tablic wielowymiarowych?
- Jak przeszukiwać tablice wielowymiarowe?
- Jak pracować z tablicami wielowymiarowymi za pomocą pętli PHP foreach?
Zacznę od przedstawienia paru sytuacji, w których mogą się przydać tablice zawierające więcej niż jeden wymiar.
Tablice wielowymiarowe PHP — zastosowania
Kiedy mówi się o tablicach wielowymiarowych, to tak naprawdę najczęściej ma się na myśli tablice dwuwymiarowe i tablice trójwymiarowe.
Struktury o większej liczbie wymiarów w praktycznym użyciu są rzadkością. Do czego więc używa się tablic dwuwymiarowych? Lista ich zastosowań jest bardzo długa, ponieważ ten typ struktury danych idealnie odpowiada wielu rodzajom informacji.
Tablic dwuwymiarowych używa się do przechowywania wszelkiego rodzaju informacji o strukturze tabeli, ponieważ w istocie można o nich powiedzieć, że są abstrakcyjną reprezentacją tego modelu reprezentacji danych.
Przykładowo, w tablicy dwuwymiarowej moglibyśmy zapisać dane użytkowników systemu, np.:
| Imię | Nazwisko | Maska uprawnień |
|---|---|---|
| Mieczysław | Kowalski | 1111 |
| Brygida | Nowak | 0111 |
| Marcin | Kwiatkowski | 0001 |
Ponadto tablice dwuwymiarowe PHP mogą być używane do przechowywania danych do kreślenia wykresów, do przechowywania danych w grach, do reprezentowania macierzy w obliczeniach matematycznych czy w przetwarzaniu grafiki (zresztą też często z wykorzystaniem macierzy).
A do czego mogą służyć tablice trójwymiarowe? Najprościej mówiąc są one tablicami tablic dwuwymiarowych.
Weźmy na przykład powyższą tabelę. Zawiera ona dane użytkowników systemu o różnym poziomie uprawnień. Mieczysław jest administratorem, Brygida jest redaktorką, a Marcin jest subskrybentem. Gdyby w naszym systemie było po kilka osób z każdej z tych grup, to dla każdej z nich utworzylibyśmy osobną tabelę, np.:
| Administratorzy | ||
|---|---|---|
| Mieczysław | Kowalski | 1111 |
| Anna | Sobieska | 1111 |
| Stefan | Zawadzki | 1111 |
| Redaktorzy | ||
|---|---|---|
| Marlena | Wiśniewska | 0111 |
| Lidia | Adamczuk | 0111 |
| Alan | Baranowski | 0111 |
| Subskrybenci | ||
|---|---|---|
| Zenon | Rogoziński | 0001 |
| Julia | Grodzka | 0001 |
| Zuzanna | Radomska | 0001 |
Tablica trójwymiarowa byłaby tablicą zawierającą te trzy tablice dwuwymiarowe. Być może poniższa ilustracja pomoże ci to sobie wyobrazić.

Oprócz tego tablice trójwymiarowe PHP mogą być używane w obliczeniach na macierzach trójwymiarowych, do przetwarzania grafiki albo do przechowywania danych z bardziej rozbudowanych formularzy internetowych.
No dobrze, to jak w takim razie tworzy się te dwu- i trójwymiarowe tablice w PHP? Zobaczmy.
Tworzenie tablic wielowymiarowych w PHP
Jak już wiesz, element tablicy PHP może zawierać inną tablicę. Aby więc utworzyć tablicę wielowymiarową, należy zdefiniować tablicę tablic. Jeśli ma to być tablica dwuwymiarowa, to należy utworzyć tablicę, której każdy element zawiera inną tablicę, np.:
$admins = [
["Mieczysław", "Kowalski", 1111],
["Brygida", "Nowak", 1111],
["Marcin", "Kwiatkowski", 1111],
];W tym przykładzie utworzyłem tablicę o nazwie $admins, która zawiera trzy elementy, również będące tablicami. Jest to więc tablica dwuwymiarowa, która stanowi reprezentację przykładowej tabeli z początku tej strony.
Gdybyśmy chcieli utworzyć tablicę trójwymiarową, której schemat również został pokazany wcześniej, to moglibyśmy utworzyć jeszcze „szerszą” tablicę, zawierającą kilka tablic podobnych do powyższej, np.:
$users = [
"admins" => [
["Mieczysław", "Kowalski", 1111],
["Brygida", "Nowak", 1111],
["Marcin", "Kwiatkowski", 1111],
],
"editors" => [
["Marlena", "Wiśniewska", 0111],
["Lidia", "Adamczuk", 0111],
["Alan", "Baranowski", 0111],
],
"subscribers" => [
["Zenon", "Rogoziński", 0001],
["Julia", "Grodzka", 0001],
["Zuzanna", "Radomska", 0001],
],
];Tutaj mamy tablicę trójwymiarową o nazwie $users. Zawiera ona trzy elementy, tablice o kluczach admins, editors i subscribers, z których każda również zawiera po trzy tablice. W efekcie mamy trzy wymiary.
Aby szybko sprawdzić zawartość tablicy (o dowolnej liczbie wymiarów), można użyć funkcji PHP print_r(), np.:
print_r($users);Wynik:
Array
(
[admins] => Array
(
[0] => Array
(
[0] => Mieczysław
[1] => Kowalski
[2] => 1111
)
[1] => Array
(
[0] => Brygida
[1] => Nowak
[2] => 1111
)
[2] => Array
(
[0] => Marcin
[1] => Kwiatkowski
[2] => 1111
)
)
[editors] => Array
(
[0] => Array
(
[0] => Marlena
[1] => Wiśniewska
[2] => 73
)
[1] => Array
(
[0] => Lidia
[1] => Adamczuk
[2] => 73
)
[2] => Array
(
[0] => Alan
[1] => Baranowski
[2] => 73
)
)
[subscribers] => Array
(
[0] => Array
(
[0] => Zenon
[1] => Rogoziński
[2] => 1
)
[1] => Array
(
[0] => Julia
[1] => Grodzka
[2] => 1
)
[2] => Array
(
[0] => Zuzanna
[1] => Radomska
[2] => 1
)
)
)
Kiedy utworzysz tablicę wielowymiarową, to z pewnością chcesz mieć możliwość uzyskiwania dostępu do jej elementów. To bardzo proste, ale nie musisz mi wierzyć na słowo, tylko sprawdź poniżej.
Dostęp do elementów tablic wielowymiarowych
Aby uzyskać dostęp do elementu tablicy jednowymiarowej, należy podać jego klucz lub indeks. Natomiast w przypadku tablic wielowymiarowych należy podać tyle kluczy lub indeksów, ile jest wymiarów. Aby na przykład odnieść się do któregokolwiek elementu tablicy dwuwymiarowej, należy podać dwa klucze lub indeksy albo ich mieszankę.
Spójrz na poniższy schematyczny rysunek przedstawiający dwuwymiarową tablicę $admins:

Na schemacie tym zaznaczyłem indeksy wszystkich elementów. Odnoszenie się do elementów tablicy dwuwymiarowej jest jak popularna gra w statki albo zaznaczanie punktów w układzie współrzędnych — aby wskazać wybrany punkt, należy podać numer wiersza, a następnie numer kolumny.
Aby więc na przykład wyświetlić na stronie nazwisko pierwszego administratora (Kowalski), wskazalibyśmy pierwszy wiersz i drugą kolumnę:
echo $admins[0][1]; // Wynik: KowalskiA gdybyśmy chcieli wyświetlić maskę bitową reprezentującą poziom uprawnień trzeciego administratora, napisalibyśmy taką instrukcję:
echo $admins[2][2];Podsumowując, dostęp do elementu tablicy wielowymiarowej uzyskuje się przez podanie jego „współrzędnych” w nawiasach kwadratowych.
Jak więc wygląda to w przypadku tablic trójwymiarowych? Należy podać trzy klucze lub indeksy albo ich mieszankę. Spójrz na poniższy schemat.

Jest to schemat trójwymiarowej tablicy $users. Zawiera ona trzy tablice dwuwymiarowe, każda przechowywana pod innym kluczem (równie dobrze mogłyby być to indeksy). Aby odnieść się do wybranego elementu, należy podać trzy „współrzędne” określające jego położenie, np.:
echo $users["admins"][1][0];Najpierw wskazujemy miejsce w pierwszym wymiarze. W naszym przypadku elementy pierwszego wymiaru mają klucze nie indeksy numeryczne. To oznacza, że odnosimy się do zawartości tablicy admins.
Następny jest indeks 1, a więc interesuje nas drugi element (wiersz) tablicy admins. Ostatni jest indeks 0, co oznacza, że interesuje nas pierwszy element w tym drugim wierszu, a więc na ekranie pojawi się imię Anna.
Analogicznie możemy wybrać każdy inny element tej tablicy, np.:
echo $users["admins"][2][1]; // Wynik: Kwiatkowski
echo $users["editors"][1][2]; // Wynik: 73 (nie, to nie błąd)
echo $users["subscribers"][0][2]; // Wynik: 1
echo $users["editors"][2][0]; // Wynik: AlanModyfikowanie elementów tablic wielowymiarowych
Modyfikowanie elementów tablic wielowymiarowych w PHP to bardzo prosta operacja, która jest bardzo podobna do operacji dostępu, tylko zakończona przypisaniem.
Aby na przykład zmienić imię trzeciego redaktora w naszej tablicy trójwymiarowej $users, należy odwołać się do zawierającego je elementu tablicy, po czym przypisać inne:
echo $users["editors"][2][0] = "Grzegorz";W analogiczny sposób można zmienić dowolny inny element tablicy o każdej liczbie wymiarów.
Teraz przejdziemy do dodawania elementów do tablic wielowymiarowych.
Dodawanie elementów do tablic wielowymiarowych
Elementy do tablic wielowymiarowych można dodawać w różnych miejscach, na dowolnej pozycji w dowolnym wymiarze. Składnia jest podobna do składni dostępu do elementów w tablicach jednowymiarowych, tylko obejmuje składniki odnoszące się do większej liczby wymiarów.
Można powiedzieć, że ścieżki do interesujących nas miejsc są w tablicach wielowymiarowych dłuższe niż w jednowymiarowych. I to praktycznie wszystkie różnice. Najpierw pokażę ci, jak dodawać elementy na końcu tablicy wielowymiarowej.
Dodawanie elementów na końcu tablicy wielowymiarowej
Gdybyśmy na przykład chcieli dodać na końcu tablicy $users nowego subskrybenta, to zastosowalibyśmy następującą składnię:
$users["subscribers"][] = ["Grzegorz", "Zawadzki", 0001];Teraz zawartość tej tablicy wyglądałaby tak:
[subscribers] => Array
(
[0] => Array
(
[0] => Zenon
[1] => Rogoziński
[2] => 1
)
[1] => Array
(
[0] => Julia
[1] => Grodzka
[2] => 1
)
[2] => Array
(
[0] => Zuzanna
[1] => Radomska
[2] => 1
)
[3] => Array
(
[0] => Grzegorz
[1] => Zawadzki
[2] => 1
)
)
Operator [] w powyższej instrukcji oznacza, że chcemy dodać nowy element na końcu wskazanej tablicy (wskazanego wymiaru tablicy). W tym przypadku wskazałem, że chcę dodać nowy element na końcu wymiaru subscribers.
A gdybyśmy chcieli dodać element w dowolnym innym miejscu (tzn. nie na końcu)? Zobaczmy.
Dodawanie elementów w środku tablicy wielowymiarowej
Powiedzmy na przykład, że postanowiliśmy dodać do naszych danych nowe pole — miasto zamieszkania danej osoby, które powinno znajdować się po nazwisku, czyli na trzecim miejscu w „najbardziej wewnętrznej” tablicy.
W takim przypadku możemy posłużyć się funkcją PHP array_splice(), której należy po kolei przekazać tablicę do modyfikacji, numer indeksu, pod którym chcemy wstawić nowy element, wartość 0 oznaczającą, że nie chcemy nic usuwać, oraz wartość do wstawienia we wskazanym miejscu, np.:
array_splice($users["admins"][0], 2, 0, "Warszawa");Teraz interesujący nas fragment wymiaru administratorów będzie wyglądać tak:
[admins] => Array
(
[0] => Array
(
[0] => Mieczysław
[1] => Kowalski
[2] => Warszawa
[3] => 1111
)
Pozostało nam jeszcze dowiedzieć się, jak dodawać elementy na początku tablicy wielowymiarowej. Niczym cię tu nie zaskoczę, to również bardzo prosta operacja, niewiele różniąca się od analogicznej operacji na tablicach jednowymiarowych.
Dodawanie elementów na początku tablicy wielowymiarowej
Aby dodać element na początku tablicy wielowymiarowej, lub dokładniej na początku wybranego wymiaru tablicy wielowymiarowej, można użyć funkcji array_unshift.
Funkcja ta przyjmuje tablicę do zmodyfikowania jako pierwszy argument i listę zawierającą dowolną liczbę rozdzielanych przecinkami wartości do wstawienia na początku tej tablicy.
Aby na przykład dodać nowego subskrybenta na początku wymiaru subskrybentów, moglibyśmy napisać taki kod:
array_unshift($users["subscribers"], ["Grzegorz", "Zawadzki", 0001]);W tym przypadku do tablicy subskrybentów dodałem tablicę reprezentującą nowego subskrybenta. Jest to równoznaczne z poniższym kodem:
"subscribers" => [
["Grzegorz", "Zawadzki", 0001],
["Zenon", "Rogoziński", 0001],
["Julia", "Grodzka", 0001],
["Zuzanna", "Radomska", 0001],
],
Skoro umiesz już dodawać elementy do tablic wielowymiarowych na różne sposoby, to teraz przyjrzymy się sposobom ich usuwania.
Usuwanie elementów z tablic wielowymiarowych
Jak już się pewnie domyślasz, usuwanie elementów z tablic wielowymiarowych to żadna wielka filozofia, jeśli ktoś wie, jak wykonywać te działania na tablicach jednowymiarowych.
Jeśli jeszcze nie opanowałeś metod pracy z tablicami jednowymiarowymi, przeczytaj rozdział Tablice PHP — podstawy. A jeśli już masz to wszystko opanowane, to usuwanie elementów z tablic wielowymiarowych nie sprawi Ci żadnego problemu.
Aby się niepotrzebnie nie powtarzać, przypomnę że praca z tablicami wielowymiarowymi wygląda prawie tak samo, jak z jednowymiarowymi, tylko zamiast zmiennej reprezentującej tablicę jednowymiarową w operacjach wykorzystuje się odwołanie do wybranego wymiaru, będącego tablicą.
Aby więc usunąć jeden dowolny element z tablicy wielowymiarowej, można użyć funkcji unset(). Powiedzmy na przykład, że z naszej tablicy użytkowników systemu chcemy usunąć jednego z administratorów. Możemy to zrobić tak:
unset($users["admins"][0]);Ta instrukcja nakazuje usunąć z tablicy $users z wymiaru admins pierwszy element, czyli pana Mieczysława Kowalskiego. Po tej operacji wymiar admins ma następującą zawartość:
[admins] => Array
(
[1] => Array
(
[0] => Anna
[1] => Sobieska
[2] => 1111
)
[2] => Array
(
[0] => Marcin
[1] => Kwiatkowski
[2] => 1111
)
)
Do usunięcia kilku kolejnych elementów na raz można użyć funkcji array_splice(), natomiast do wygodnego usuwania pierwszego i ostatniego elementu służą odpowiednio funkcje array_shift() i array_pop(). Sposób ich użycia jest opisany na indywidualnych poświęconych im stronach oraz w rozdziale Tablice PHP — podstawy.
Przeglądanie tablic wielowymiarowych za pomocą pętli
Najwygodniejszym sposobem na przeglądanie tablic za pomocą pętli jest użycie zagnieżdżonych pętli foreach. Liczba poziomów zagnieżdżenia jest zależna od liczby wymiarów tablicy. Zaczniemy od najprostszego możliwego przypadku, czyli przeglądania tablicy dwuwymiarowej.
Weźmy na przykład pokazaną wcześniej tablicę dwuwymiarową administratorów systemu. Poniżej dla wygody przedstawiam ją jeszcze raz:
$admins = [
["Mieczysław", "Kowalski", 1111],
["Brygida", "Nowak", 1111],
["Marcin", "Kwiatkowski", 1111],
];Powiedzmy, że zawartość tej tablicy chcemy wyświetlić na stronie w formie tabeli. Możemy to zrobić za pomocą poniższej mieszanki kodu HTML i PHP z wykorzystaniem pętli PHP foreach:
<table>
<tr>
<th>Imię</th>
<th>Nazwisko</th>
<th>Uprawnienia</th>
</tr>
<?php
foreach ($admins as $admin) {
echo "<tr>";
foreach ($admin as $admin_field) {
echo "<td>" . $admin_field . '</td>';
}
echo "</tr>";
}
?>
</table>Przyjrzymy się dokładnie temu skryptowi:
- Najpierw otworzyłem tabelę HTML i zdefiniowałem wiersz nagłówkowy (zobacz Element HTML th), który opisuje zawartość pozostałych wierszy.
- Następnie, za pomocą pierwszej pętli
foreach, pobieram po kolei elementy tablicy $admins (wiersz 8), czyli jednowymiarowe tablice zawierające dane poszczególnych administratorów. - Dla każdego pobranego elementu tablicy $admins otwieram wiersz (element HTML tr) w tabeli HTML (wiersz 9).
- Potem, w zagnieżdżonej pętli
foreach, pobieram po kolei elementy z drugiego wymiaru tablicy administratorów (imię, nazwisko i binarną maskę uprawnień — wiersz 10) i każdy z nich wstawiam do elementu HTML td (wiersz 11). Inaczej mówiąc, dla każdej pozycji danych każdego administratora tworzę komórkę w wierszu tabeli. - Po wyjściu z wewnętrznej pętli
foreachz powrotem znajduję się w pętli nadrzędnej, w której zamykam wiersz tabeli. To znaczy, że dla każdego elementu tablicy $admins tworzę osobny wiersz tabeli, zawierający dane jednego administratora.
W efekcie działania tego kodu zostaje wygenerowana następująca tabela HTML:
<table>
<tr>
<th>Imię</th>
<th>Nazwisko</th>
<th>Uprawnienia</th>
</tr>
<tr>
<td>Mieczysław</td>
<td>Kowalski</td>
<td>1111</td>
</tr>
<tr>
<td>Brygida</td>
<td>Nowak</td>
<td>1111</td>
</tr>
<tr>
<td>Marcin</td>
<td>Kwiatkowski</td>
<td>1111</td>
</tr>
</table>Teraz wystarczy dodać parę arkuszy stylów CSS, aby nadać jej atrakcyjny wygląd i gotowe.
Praca z tablicami trójwymiarowymi wygląda podobnie, ale wymaga zastosowania dodatkowego poziomu zagnieżdżenia pętli. Na końcu znajduje się ćwiczenie dotyczące iteracji przez taką tablicę. Zachęcam do jego wykonania i sprawdzenia poprawnej odpowiedzi.
Teraz przyjrzymy się metodom sortowania tablic wielowymiarowych.
Sortowanie tablic wielowymiarowych
Tablice wielowymiarowe, podobnie jak jednowymiarowe, można sortować między innymi za pomocą funkcji usort(), uasort() albo uksort() (i jeszcze paru innych — zobacz Wszystkie funkcje tablicowe PHP). W tym przypadku po raz kolejny wszystko sprowadza się tak naprawdę do wybrania określonego wymiaru tablicy i wykonania operacji na nim, jakby był tablicą jednowymiarową.
Na przykład, tablicę użytkowników systemu możemy posortować na kilka różnych sposobów — według nazwy grupy użytkowników (admins, editors i subscribers) albo bardziej wewnętrznie, czyli według nazwiska lub imienia użytkownika w obrębie konkretnej grupy itd.
Powiedzmy, że chcemy posortować naszą tablicę użytkowników alfabetycznie według nazwy grupy w odwrotnej kolejności: subscribers, editors i admins. Do tego celu można użyć funkcji PHP uksort(), która umożliwia sortowanie tablicy według kluczy za pomocą funkcji zwrotnej. Oto kod tej funkcji:
uksort($users, fn($a, $b) => $b <=> $a);Jak widać, nic skomplikowanego tu nie ma. Jeśli nie rozumiesz czegoś w części fn($a, $b) => $b <=> $a, to przeczytaj, czym są funkcje zwrotne PHP, funkcje strzałkowe PHP oraz operator statek kosmiczny.
W tym przykładzie sortujemy tablicę według pierwszego wymiaru. A czy wiesz, jak posortować na przykład poszczególne tablice użytkowników wg nazwiska? Pozostawiam to jako ćwiczenie do samodzielnego wykonania.
Na zakończenie tego rozdziału pokażę ci jeszcze ciekawą „sztuczkę”, która umożliwia zamianę w zmienne wszystkich elementów tablicy w pętli foreach. Warto ją znać.
Destrukturyzacja tablic w pętli foreach
Podczas pracy z tablicami dwuwymiarowymi w PHP można korzystać ze specjalnej składni, która umożliwia zapisanie wszystkich elementów zagnieżdżonej tablicy w zmiennych pętlowych.
Składnia ta występuje w dwóch równoważnych wersjach: z użyciem operatora [] i z użyciem konstrukcji językowej PHP list().
Weźmy na przykład tablicę redaktorów z naszych wcześniejszych przykładów:
$editors = [
["Marlena", "Wiśniewska", 0111],
["Lidia", "Adamczuk", 0111],
["Alan", "Baranowski", 0111],
];Tablicę tę możemy poddać destrukturyzacji w pętli foreach w następujący sposób:
foreach($editors as [$imie, $nazwisko, $maska]) {
echo "Imię: $imie<br>";
echo "Nazwisko: $nazwisko<br>";
echo "Maska: $maska<br><br>";
}Lub przy użyciu konstrukcji językowej PHP list():
foreach($editors as list($imie, $nazwisko, $maska)) {
echo "Imię: $imie<br>";
echo "Nazwisko: $nazwisko<br>";
echo "Maska: $maska<br><br>";
}Wynik:
Imię: Marlena Nazwisko: Wiśniewska Maska: 73 Imię: Lidia Nazwisko: Adamczuk Maska: 73 Imię: Alan Nazwisko: Baranowski Maska: 73
Podsumowanie
- Tablica wielowymiarowa PHP to tablica, zawierająca jako elementy inne tablice.
- Tablica dwuwymiarowa to tablica tablic jednowymiarowych.
- Tablica trójwymiarowa to tablica tablic dwuwymiarowych.
- W praktycznym użyciu najczęściej spotyka się tablice jedno-, dwu- i trójwymiarowe.
- Dostęp do elementów tablic wielowymiarowych uzyskuje się za pomocą indeksów lub kluczy, których liczba odpowiada liczbie wymiarów.
- Operacje takie jak dodawanie, usuwanie i modyfikowanie elementów tablic wielowymiarowych wykonuje się bardzo podobnie jak w tablicach jednowymiarowych, tylko należy podać większą liczbę indeksów lub kluczy.
- Tablice wielowymiarowe można sortować za pomocą różnych funkcji, takich jak między innymi usort(),
uasort()iuksort(). - Tablice dwuwymiarowe można destrukturyzować, czyli można zapisywać wszystkie ich wartości w zmiennych pętlowych pętli
foreach. - Destrukturyzację tablic można wykonywać za pomocą operatora
[]lub konstrukcji językowejlist().
Pytania
- Czym jest tablica wielowymiarowa PHP?
- Z czego składa się tablica dwuwymiarowa?
- Z czego składa się tablica trójwymiarowa?
- Do jakich celów najczęściej są używane tablice wielowymiarowe PHP?
- Jak uzyskuje się dostęp do elementów tablic wielowymiarowych?
- Czym różnią się operacje dodawania, usuwania i modyfikowania elementów tablic wielowymiarowych od analogicznych operacji na tablicach jednowymiarowych?
- Jakie znasz funkcje sortowania tablic?
- Na czym polega destrukturyzacja tablica w pętli
foreach? Jaka jest składnia tej operacji?
Ćwiczenia
- Za pomocą pętli
foreachwygeneruj z tablicy $users taką tabelę HTML, jak na poniższym zrzucie ekranu.Stwórz taką tabelę z tablicy użytkowników przy użyciu PHP Podpowiedzi:
- Może przydać ci się wersja pętli foreach klucz => wartość.
- Jeśli chcesz wyśrodkować nagłówek tabeli, może przydać ci się atrybut HTML colspan.
- Posortuj poszczególne wymiary tablicy $users wg nazwiska użytkownika.
- Ćwiczenie dla chętnych (nie do końca na temat tego rozdziału):
Wartości liczbowe wyświetlają się dziwnie. Czy wiesz, dlaczego przykładowa instrukcja echo $users[„editors”][1][2]; dała wynik
73?Jeśli nie, dowiedz się tego. Wskazówka: poszukaj odpowiedzi w opisie liczb całkowitych w PHP.
Rozwiązania ćwiczeń
Ćwiczenie 1
<?php
$users = [
"admins" => [
["Mieczysław", "Kowalski", 1111],
["Anna", "Sobieska", 1111],
["Marcin", "Kwiatkowski", 1111],
],
"editors" => [
["Marlena", "Wiśniewska", 0111],
["Lidia", "Adamczuk", 0111],
["Alan", "Baranowski", 0111],
],
"subscribers" => [
["Grzegorz", "Zawadzki", 0001],
["Zenon", "Rogoziński", 0001],
["Julia", "Grodzka", 0001],
["Zuzanna", "Radomska", 0001],
],
];
?>
<table>
<?php
foreach ($users as $key => $user_group) {
echo "<tr><th colspan=3>" . $key . "</th></tr>";
foreach ($user_group as $individual_user) {
echo "<tr>";
foreach($individual_user as $data_item) {
echo "<td>" . $data_item . '</td>';
}
echo "</tr>";
}
}
?>
</table>
Ćwiczenie 2
<pre>
<?php
$users = [
"admins" => [
["Mieczysław", "Kowalski", 1111],
["Anna", "Sobieska", 1111],
["Marcin", "Kwiatkowski", 1111]
],
"editors" => [
["Marlena", "Wiśniewska", 0111],
["Lidia", "Adamczuk", 0111],
["Alan", "Baranowski", 0111]
],
"subscribers" => [
["Grzegorz", "Zawadzki", 0001],
["Zenon", "Rogoziński", 0001],
["Julia", "Grodzka", 0001],
["Zuzanna", "Radomska", 0001]
],
];
foreach ($users as $key => $value) {
usort($users[$key], fn($a, $b) => $a[1] <=> $b[1]);
}
print_r($users);
Ćwiczenie 3
Te wartości są traktowane jako liczby binarne lub ósemkowe. Konkretna wartość z ćwiczenia 0111 została przez PHP potraktowana jako wartość ósemkowa, której wartość dziesiętna wynosi 73.




