Tablice indeksowane

🎯 Po tej lekcji stworzysz tablicę, dodasz do niej elementy i odczytasz je według indeksu.

Wyobraź sobie listę zakupów wypisaną na kartce: mleko, chleb, jabłka, masło. Każda pozycja ma swój numer — pierwsza jest na miejscu pierwszym, druga na drugim. Tablica indeksowana w PHP działa dokładnie tak samo, tyle że numerowanie zaczyna się od zera, nie od jedynki.

Czym jest tablica?

Tablica (ang. array) to zmienna, która przechowuje wiele wartości naraz. Zamiast pisać:

<?php
declare(strict_types=1);

$owoc1 = 'jabłko';
$owoc2 = 'gruszka';
$owoc3 = 'śliwka';

Możesz zebrać wszystko w jednej zmiennej:

<?php
declare(strict_types=1);

$owoce = ['jabłko', 'gruszka', 'śliwka'];

Nawiasy kwadratowe [...] to nowoczesna, zalecana składnia PHP 8. Wewnątrz umieszczasz wartości oddzielone przecinkami.

Indeksy — numery elementów

Każdy element tablicy ma swój indeks (numer porządkowy). Indeksowanie zaczyna się od 0:

<?php
declare(strict_types=1);

$owoce = ['jabłko', 'gruszka', 'śliwka'];
//          [0]        [1]       [2]

Żeby odczytać konkretny element, podajesz jego indeks w nawiasach kwadratowych:

<?php
declare(strict_types=1);

$owoce = ['jabłko', 'gruszka', 'śliwka'];

echo $owoce[0]; // wynik: jabłko
echo $owoce[1]; // wynik: gruszka
echo $owoce[2]; // wynik: śliwka
⚠️ Indeks poza zakresem: Jeśli spróbujesz odczytać indeks, który nie istnieje (np. $owoce[5] w tablicy trzyelementowej), PHP zgłosi ostrzeżenie i zwróci null. Zawsze sprawdzaj, czy indeks istnieje, zanim go użyjesz.

Podgląd całej tablicy — print_r

Żeby zobaczyć całą zawartość tablicy, użyj print_r:

<?php
declare(strict_types=1);

$owoce = ['jabłko', 'gruszka', 'śliwka'];
print_r($owoce);
// wynik:
// Array
// (
//     [0] => jabłko
//     [1] => gruszka
//     [2] => śliwka
// )

print_r pokazuje indeksy i wartości w czytelnej postaci. Przydaje się bardzo podczas debugowania.

Dodawanie elementów

Żeby dodać nowy element na koniec tablicy, używasz $tablica[] = wartość:

<?php
declare(strict_types=1);

$lista = ['mleko', 'chleb'];

$lista[] = 'jabłka';  // doda jako [2]
$lista[] = 'masło';   // doda jako [3]

print_r($lista);
// wynik:
// Array
// (
//     [0] => mleko
//     [1] => chleb
//     [2] => jabłka
//     [3] => masło
// )

PHP automatycznie nadaje kolejny indeks — nie musisz o tym myśleć.

Modyfikowanie elementów

Żeby zmienić istniejący element, przypisujesz nową wartość pod jego indeks:

<?php
declare(strict_types=1);

$oceny = [3, 4, 5];
echo $oceny[0]; // wynik: 3

$oceny[0] = 5;  // zmień pierwszą ocenę na 5
echo $oceny[0]; // wynik: 5

Praktyczny przykład — lista zakupów

Stwórzmy listę zakupów krok po kroku:

<?php
declare(strict_types=1);

$zakupy = ['mleko', 'chleb', 'ser'];

// Dodajemy kolejne produkty:
$zakupy[] = 'masło';
$zakupy[] = 'jajka';

// Zmieniamy jeden produkt:
$zakupy[1] = 'bułki';  // zamiast 'chleb'

print_r($zakupy);
// wynik:
// Array
// (
//     [0] => mleko
//     [1] => bułki
//     [2] => ser
//     [3] => masło
//     [4] => jajka
// )
💡 Tablica może przechowywać różne typy: W jednej tablicy możesz mieszać stringi, liczby całkowite i zmiennoprzecinkowe. W praktyce jednak warto trzymać w tablicy dane jednego rodzaju — kod jest wtedy czytelniejszy.

W następnej lekcji poznasz tablice asocjacyjne — zamiast numerów indeksów użyjesz własnych nazw, takich jak 'imie', 'cena' czy 'opis'. To czyni dane jeszcze bardziej czytelne.

Sprawdź się

Jaki indeks ma pierwszy element tablicy indeksowanej w PHP?

Jak dodasz nowy element 'banan' na koniec tablicy $owoce?

Co wypisze echo $kolory[2]; jeśli $kolory = ['czerwony', 'zielony', 'niebieski']?

Ćwiczenie

Stwórz tablicę $oceny zawierającą trzy oceny szkolne: 4, 5, 3. Następnie dodaj czwartą ocenę 5 na koniec tablicy. Zmień pierwszą ocenę (indeks 0) na 5. Wyświetl wszystkie elementy tablicy za pomocą print_r.

Pokaż rozwiązanie
<?php
declare(strict_types=1);

$oceny = [4, 5, 3];

$oceny[] = 5;     // dodaj czwartą ocenę
$oceny[0] = 5;    // zmień pierwszą ocenę

print_r($oceny);
// wynik:
// Array
// (
//     [0] => 5
//     [1] => 5
//     [2] => 3
//     [3] => 5
// )