Dataniedziela, 9 sierpnia 2026 Czas07:46:31
← Aplikacje internetowe (PHP)

Lekcja 5. Tablice indeksowane i asocjacyjne w PHP

Podstawowy

Po co się tego uczymy?

Zanim nauczysz się pobierać dane z bazy, musisz oswoić się z tablicami — to właśnie w formie tablicy PHP dostarczy Ci dane z każdego zapytania SQL. Bez tej lekcji Lekcja 11 (wyświetlanie danych z bazy) byłaby niezrozumiała.

Teoria

Tablica przechowuje wiele wartości w jednej zmiennej. PHP ma dwa główne rodzaje tablic:

Tablica indeksowana — elementy mają numeryczne indeksy zaczynające się od 0:
$filmy = ["Incepcja", "Matrix", "Interstellar"];
echo $filmy[0]; — wypisze "Incepcja".

Tablica asocjacyjna — elementy mają własne, nazwane klucze zamiast numerów:
$film = ["tytul" => "Incepcja", "rok" => 2010, "ocena" => 8.8];
echo $film["tytul"]; — wypisze "Incepcja".

To właśnie w formacie tablicy asocjacyjnej PHP zwraca Ci pojedynczy wiersz z bazy danych (poznasz to w Lekcji 11) — klucze tablicy odpowiadają wtedy nazwom kolumn.

Przydatne funkcje: count() (liczba elementów), array_push() (dodanie elementu), in_array() (czy wartość istnieje w tablicy), sort() (sortowanie).

Przykład z życia

Koszyk zakupowy w sklepie internetowym to w praktyce tablica — każdy dodany produkt to jeden element, a cała zawartość koszyka to lista tych elementów przechowywana (jak zobaczysz w Lekcji 17) w sesji użytkownika.

Kod (PHP)

<?php
// tablica indeksowana
$filmy = ["Incepcja", "Matrix", "Interstellar"];
echo "Pierwszy film: " . $filmy[] . "<br>";
echo "Liczba filmów: " . count($filmy) . "<br>";

$filmy[] = "Diuna"; // dopisanie kolejnego elementu na koniec

foreach ($filmy as $indeks => $tytul) {
    echo "$indeks: $tytul<br>";
}

echo "<hr>";

// tablica asocjacyjna - jeden film ze szczegółami
$film = [
    "tytul" => "Incepcja",
    "rok" => 2010,
    "ocena" => 8.8
];

echo $film["tytul"] . " (" . $film["rok"] . ") - ocena: " . $film["ocena"];

Komentarz i wyjaśnienie kodu

$filmy[] = "Diuna" to najprostszy sposób dodania elementu na koniec tablicy indeksowanej — puste nawiasy kwadratowe mówią PHP "dodaj na następny wolny indeks". W pętli foreach ( as $indeks => $tytul) pobieramy jednocześnie indeks i wartość — to przydaje się, gdy chcesz np. ponumerować listę na stronie. Tablica asocjacyjna na końcu pokazuje dokładnie taki kształt danych, jaki dostaniesz z bazy danych dla jednego wiersza — klucze ("tytul", "rok", "ocena") będą wtedy nazwami kolumn tabeli SQL.

Ćwiczenie samodzielne

Dodaj do tablicy $film nowy klucz "gatunek" i wypisz go razem z resztą danych w jednym zdaniu.

Zadania do pracy własnej

  1. Stwórz tablicę indeksowaną z pięcioma tytułami Twoich ulubionych filmów i wypisz je w formie listy HTML (

    • ) za pomocą foreach.
    • Stwórz tablicę asocjacyjną reprezentującą jeden produkt sklepu (nazwa, cena, ilość_magazyn) i wypisz zdanie w stylu "Produkt X kosztuje Y zł, dostępnych sztuk: Z".

    • Stwórz tablicę tablic (każdy element to osobna tablica asocjacyjna z tytulem i oceną filmu) reprezentującą 3 filmy, a następnie pętlą foreach wypisz listę HTML z tytułem i oceną każdego z nich — to dokładnie tak wygląda praca z wieloma wierszami danych z bazy.

Typowe błędy

Częsty błąd to próba odwołania się do nieistniejącego indeksu/klucza (np. $filmy[10], gdy tablica ma tylko 4 elementy) — PHP zgłosi wtedy ostrzeżenie "Undefined array key". Drugi błąd: pomylenie tablicy indeksowanej z asocjacyjną i próba użycia $film[0] tam, gdzie klucze to nazwy tekstowe. Trzeci: zapomnienie, że indeksy w tablicy indeksowanej zaczynają się od 0, nie od 1.

Nawiązanie do egzaminu zawodowego

Tablice to część efektu INF.03.5.2.4 ("posługuje się typami prostymi i złożonymi") — a w połączeniu z pętlą foreach (Lekcja 4) stanowią mechanizm, którego użyjesz w KAŻDEJ lekcji od tego miejsca w dziale.