Jeśli dopiero zaczynasz swoją przygodę z PHP, to prawdopodobnie szybko natkniesz się na pojęcie tablicy. I dobrze! Bo tablice to jedna z najważniejszych struktur danych w tym języku. Bez nich ciężko byłoby przechowywać większe ilości informacji czy przekazywać dane między funkcjami.
W tym artykule pokażę Ci krok po kroku, jak tworzyć, modyfikować i wykorzystywać tablice w PHP. Zrozumiesz, czym się różnią tablice indeksowane od asocjacyjnych, nauczysz się iterować po elementach i poznasz kilka praktycznych sztuczek, które przyspieszą Twoją pracę.
Co to jest tablica w PHP?
Tablica w PHP to po prostu zbiór danych przechowywanych pod jednym identyfikatorem (czyli nazwą zmiennej). Zamiast tworzyć osobne zmienne dla każdego elementu, możesz umieścić wszystko w jednej strukturze.
Dla przykładu:
$imiona = ["Kasia", "Tomek", "Basia"];
Tutaj mamy tablicę, w której przechowujemy trzy imiona. Zamiast pisać $imie1, $imie2, $imie3, mamy jedną zmienną $imiona.
Każdy element w tablicy ma swój indeks, czyli numer lub klucz, za pomocą którego możesz go odczytać.
Tablice indeksowane
Zacznijmy od najprostszych – tablic indeksowanych.
To takie tablice, gdzie kluczem każdego elementu jest liczba całkowita, zaczynająca się od zera.
Przykład:
$owoce = ["jabłko", "banan", "truskawka"];
W praktyce:
$owoce[0]zwróci"jabłko"$owoce[1]zwróci"banan"$owoce[2]zwróci"truskawka"
Możesz też tworzyć tablice „na piechotę”:
$owoce = array(); $owoce[0] = "jabłko"; $owoce[1] = "banan"; $owoce[2] = "truskawka";
Lub po prostu:
$owoce = array("jabłko", "banan", "truskawka");
Od PHP 5.4 możesz używać krótszej składni z nawiasami kwadratowymi [], i to jest dzisiaj najczęściej stosowany zapis.
Tablice asocjacyjne
Czasem nie chcesz, żeby elementy były indeksowane liczbami. Chcesz używać słownych kluczy, np. „imię”, „wiek”, „miasto”. Wtedy tworzysz tablicę asocjacyjną.
Przykład:
$uzytkownik = [
"imie" => "Jan",
"nazwisko" => "Kowalski",
"wiek" => 28
];
Teraz zamiast pisać $uzytkownik[0], możesz odwołać się po nazwie klucza:
echo $uzytkownik["imie"]; // Jan
Tablice asocjacyjne są bardzo przydatne np. do przechowywania danych formularzy, konfiguracji aplikacji czy wyników zapytań z bazy danych.
Tablice wielowymiarowe
Co jeśli potrzebujesz przechować bardziej złożone dane, np. listę użytkowników, gdzie każdy ma imię, wiek i miasto?
Wtedy używasz tablic wielowymiarowych – czyli tablic w tablicach.
Przykład:
$uzytkownicy = [
[
"imie" => "Kasia",
"wiek" => 25,
"miasto" => "Warszawa"
],
[
"imie" => "Tomek",
"wiek" => 30,
"miasto" => "Kraków"
],
[
"imie" => "Basia",
"wiek" => 22,
"miasto" => "Gdańsk"
]
];
Dzięki temu możesz łatwo dostać się do konkretnego elementu:
echo $uzytkownicy[1]["miasto"]; // Kraków
Iterowanie po tablicach
Kiedy masz już dane w tablicy, chcesz po nich przejść – np. wyświetlić wszystkie elementy.
Do tego używamy pętli.
Pętla for
Działa świetnie z tablicami indeksowanymi:
$owoce = ["jabłko", "banan", "truskawka"];
for ($i = 0; $i < count($owoce); $i++) {
echo $owoce[$i] . "<br>";
}
Ale to rozwiązanie jest mało elastyczne. Lepsze będzie…
Pętla foreach
Najczęściej używana pętla przy pracy z tablicami w PHP.
Działa prosto i jest czytelna:
$owoce = ["jabłko", "banan", "truskawka"];
foreach ($owoce as $owoc) {
echo $owoc . "<br>";
}
Jeśli chcesz również dostać klucz, użyj takiej składni:
foreach ($owoce as $indeks => $owoc) {
echo "Indeks $indeks: $owoc <br>";
}
Działa też dla tablic asocjacyjnych:
$uzytkownik = [
"imie" => "Jan",
"nazwisko" => "Kowalski",
"wiek" => 28
];
foreach ($uzytkownik as $klucz => $wartosc) {
echo "$klucz: $wartosc <br>";
}
Najczęściej używane funkcje do pracy z tablicami
PHP oferuje dziesiątki funkcji do obsługi tablic. Oto kilka, które warto znać:
| Funkcja | Opis |
|---|---|
count($tablica) | Zwraca liczbę elementów w tablicy |
array_push($tablica, $element) | Dodaje element na koniec tablicy |
array_pop($tablica) | Usuwa ostatni element |
array_shift($tablica) | Usuwa pierwszy element |
array_unshift($tablica, $element) | Dodaje element na początek |
in_array($wartosc, $tablica) | Sprawdza, czy wartość istnieje w tablicy |
array_keys($tablica) | Zwraca wszystkie klucze |
array_values($tablica) | Zwraca wszystkie wartości |
array_merge($tablica1, $tablica2) | Łączy dwie tablice |
sort($tablica) | Sortuje rosnąco (dla tablic indeksowanych) |
ksort($tablica) | Sortuje po kluczach (dla asocjacyjnych) |
Przykład użycia:
$liczby = [3, 1, 5, 2, 4]; sort($liczby); print_r($liczby);
Wynik:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Jak dodać i usunąć element z tablicy
Dodawanie elementu:
$owoce[] = "gruszka";
To prosty sposób na dopisanie czegoś na końcu tablicy.
Usuwanie elementu:
unset($owoce[1]);
Uwaga – unset() usuwa element, ale nie reorganizuje indeksów.
Jeśli chcesz, by indeksy się „zresetowały”, użyj:
$owoce = array_values($owoce);
Praktyczny przykład – lista użytkowników
Załóżmy, że chcesz stworzyć prostą listę użytkowników i wyświetlić ją na stronie.
Kod:
<?php
$uzytkownicy = [
["imie" => "Kasia", "wiek" => 25, "miasto" => "Warszawa"],
["imie" => "Tomek", "wiek" => 30, "miasto" => "Kraków"],
["imie" => "Basia", "wiek" => 22, "miasto" => "Gdańsk"]
];
?>
<table border="1" cellpadding="8">
<tr>
<th>Imię</th>
<th>Wiek</th>
<th>Miasto</th>
</tr>
<?php foreach ($uzytkownicy as $user): ?>
<tr>
<td><?= $user["imie"] ?></td>
<td><?= $user["wiek"] ?></td>
<td><?= $user["miasto"] ?></td>
</tr>
<?php endforeach; ?>
</table>
To prosty przykład, ale pokazuje, jak praktyczne są tablice w PHP – możesz dzięki nim generować dynamiczne tabele, listy produktów, wpisy blogowe i mnóstwo innych rzeczy.
Tablice i funkcje – przekazywanie danych
Tablice świetnie współpracują z funkcjami. Możesz je przekazywać jako argumenty, zwracać jako wyniki albo przetwarzać wewnątrz funkcji.
Przykład:
function suma($liczby) {
return array_sum($liczby);
}
$moje_liczby = [10, 20, 30, 40];
echo suma($moje_liczby); // 100
array_sum() to wbudowana funkcja, która sumuje wszystkie liczby w tablicy.
Zaawansowane operacje na tablicach
Jeśli chcesz wejść na wyższy poziom, oto kilka zaawansowanych (ale bardzo przydatnych) funkcji:
array_map()
Przekształca każdy element tablicy według podanej funkcji.
$liczby = [1, 2, 3, 4, 5]; $kwadraty = array_map(fn($x) => $x * $x, $liczby); print_r($kwadraty);
Wynik:
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
array_filter()
Filtruje tablicę – zostawia tylko elementy spełniające określony warunek.
$liczby = [1, 2, 3, 4, 5, 6]; $parzyste = array_filter($liczby, fn($x) => $x % 2 == 0); print_r($parzyste);
Wynik:
Array ( [1] => 2 [3] => 4 [5] => 6 )
array_reduce()
Sprowadza tablicę do jednej wartości (np. sumy, średniej itp.).
$liczby = [2, 3, 4]; $iloczyn = array_reduce($liczby, fn($carry, $item) => $carry * $item, 1); echo $iloczyn; // 24
Ciekawostki o tablicach w PHP
- Tablice w PHP mogą zawierać różne typy danych jednocześnie – liczby, napisy, obiekty, a nawet inne tablice.
- Klucze w tablicach asocjacyjnych są automatycznie konwertowane do łańcuchów znaków.
- Indeksy liczbowych tablic nie muszą być ciągłe – PHP sam zarządza ich przypisaniem.
- Tablice w PHP są kopiowane przez wartość, ale od wersji PHP 7 działa tzw. copy-on-write, co oznacza, że dane są fizycznie kopiowane dopiero wtedy, gdy je modyfikujesz.
Tablice w PHP to potężne narzędzie, które musisz dobrze poznać, jeśli chcesz pisać efektywny kod.
Pozwalają one na łatwe przechowywanie i przetwarzanie danych, są wszechstronne, elastyczne i co najważniejsze proste w użyciu.