Lekcja 4. Pętle w PHP (for, while, foreach)
PodstawowyPo co się tego uczymy?
Wyobraź sobie stronę z katalogiem 200 filmów pobranych z bazy danych — nikt nie pisze 200 razy tego samego kodu HTML ręcznie. Pętla wypisuje je wszystkie jednym, krótkim fragmentem kodu. To jedna z najważniejszych umiejętności w całym dziale.
Teoria
Pętle pozwalają powtórzyć ten sam fragment kodu wiele razy, bez przepisywania go ręcznie. To absolutnie kluczowe w PHP, bo prawie zawsze będziesz przeglądać WYNIKI Z BAZY DANYCH (dziesiątki albo tysiące wierszy) — a to właśnie robi się w pętli.
Rodzaje pętli:
for — gdy z góry wiesz, ile razy coś powtórzyć: for ( = 0; < 10; ++) { ... }
while — powtarza, dopóki warunek jest prawdziwy: while () { ... }
do...while — jak while, ale sprawdza warunek NA KOŃCU (więc wykona się co najmniej raz).
foreach — przechodzi po każdym elemencie tablicy: foreach ( as ) { ... }
foreach jest szczególnie ważny — to nim będziesz przeglądać wyniki zapytań SQL zwrócone z bazy danych w kolejnych lekcjach.
Przykład z życia
Strona główna serwisu filmowego z listą "Polecane filmy" — niezależnie od tego, czy w bazie jest 5 czy 500 filmów, ten sam fragment kodu z pętlą foreach wyświetli je wszystkie, jeden po drugim.
Kod (PHP)
<?php
// for - znamy dokładną liczbę powtórzeń
for ($i = 1; $i <= 5; $i++) {
echo "Film numer $i<br>";
}
echo "<hr>";
// while - powtarzamy, dopóki warunek jest prawdziwy
$bilety = 3;
while ($bilety > ) {
echo "Zostały bilety: $bilety<br>";
$bilety--;
}
echo "<hr>";
// foreach - przechodzimy po każdym elemencie tablicy (więcej o tablicach w kolejnej lekcji)
$filmy = ["Incepcja", "Matrix", "Interstellar"];
foreach ($filmy as $tytul) {
echo "Tytuł: $tytul<br>";
}
Komentarz i wyjaśnienie kodu
Pętla for ma trzy części oddzielone średnikami: start ($i = 1), warunek kontynuacji ($i <= 5) i krok ($i++, czyli zwiększenie o 1 po każdym przebiegu). Pętla while sprawdza warunek PRZED każdym powtórzeniem — jeśli zapomnisz zmniejszyć $bilety--, pętla nigdy się nie skończy (tzw. nieskończona pętla). foreach jest najprostsza w użyciu z tablicami — nie musisz w ogóle liczyć elementów, PHP sam przejdzie przez wszystkie, jeden po drugim, do zmiennej $tytul.
Ćwiczenie samodzielne
Zmień pętlę for tak, żeby liczyła od 10 do 1 malejąco, a pętlę foreach uzupełnij o piąty film w tablicy.
Zadania do pracy własnej
Napisz pętlę for wypisującą tabliczkę mnożenia liczby 7 (od 7x1 do 7x10) — to samo zadanie co w Lekcji 1, ale teraz w 3 linijkach zamiast dziesięciu.
Mając tablicę pięciu cen produktów, napisz pętlę foreach sumującą wszystkie ceny i wypisz sumę na końcu.
Napisz skrypt symulujący odliczanie do premiery filmu: pętla while, która zaczyna od 10 i odlicza do 0, wypisując za każdym razem "Premiera za X dni", a na końcu (gdy dojdzie do 0) wypisuje "Premiera już dziś!".
Typowe błędy
Najgroźniejszy błąd to nieskończona pętla — zapomnienie $i++ w for albo warunku, który kiedyś stanie się fałszywy w while, powoduje zawieszenie przeglądarki. Drugi błąd: pomylenie <= z < w warunku pętli for, co powoduje wykonanie o jedno powtórzenie za dużo albo za mało (tzw. błąd "o jeden"). Trzeci: próba użycia foreach na zmiennej, która nie jest tablicą — PHP zgłosi ostrzeżenie.
Nawiązanie do egzaminu zawodowego
Pętle to część efektu INF.03.5.2.5 ("stosuje instrukcje sterujące") — a foreach będzie Twoim codziennym narzędziem od Lekcji 11 (wyświetlanie danych z bazy), gdzie każdy wiersz wyniku zapytania SQL trzeba przejrzeć właśnie w pętli.