Dataczwartek, 13 sierpnia 2026 Czas17:57:07
← Aplikacje internetowe (PHP)

Lekcja 3. Instrukcje warunkowe w PHP (if, else, switch)

Podstawowy

Po co się tego uczymy?

Formularz logowania musi sprawdzić, czy hasło się zgadza. Sklep musi sprawdzić, czy produkt jest dostępny. Prawie każda decyzja w programie internetowym to instrukcja warunkowa — bez niej PHP wykonywałby zawsze dokładnie to samo, niezależnie od danych.

Teoria

Instrukcje warunkowe pozwalają programowi podejmować decyzje — "jeśli coś jest prawdą, zrób X, w przeciwnym razie zrób Y".

Składnia if/else w PHP:
if (warunek) { ... } elseif (inny_warunek) { ... } else { ... }

Operatory porównania: == (równe, ale luźno — "5" == 5 to true), === (identyczne — sprawdza też typ, "5" === 5 to false), !=, !==, <, >, <=, >=.

Operatory logiczne: && (AND), || (OR), ! (NOT).

Do wielu wariantów tej samej zmiennej lepiej pasuje switch:

switch () {
    case 6: echo "Celujący"; break;
    case 5: echo "Bardzo dobry"; break;
    default: echo "Inna ocena";
}

Dobra praktyka: w PHP prawie zawsze używaj === zamiast == — porównanie "luźne" (==) potrafi zaskoczyć (np. "0" == false to true), a to częste źródło błędów trudnych do znalezienia.

Przykład z życia

Wchodzisz na stronę z filmem oznaczonym kategorią wiekową. Zanim strona pokaże Ci przycisk "Odtwórz", PHP (albo JavaScript) sprawdza warunek: czy Twój wiek pozwala na obejrzenie tego materiału.

Kod (PHP)

<?php
$wiek = 16;
$maZgodeRodzica = true;

if ($wiek >= 18) {
    echo "Możesz obejrzeć ten film samodzielnie.";
} elseif ($wiek >= 13 && $maZgodeRodzica) {
    echo "Możesz obejrzeć ten film za zgodą rodzica.";
} else {
    echo "Ten film nie jest dla Ciebie.";
}

echo "<br>";

$kategoriaWiekowa = "PG-13";
switch ($kategoriaWiekowa) {
    case "G":
        echo "Film dla każdego.";
        break;
    case "PG-13":
        echo "Film dla widzów od 13 lat.";
        break;
    case "R":
        echo "Film tylko dla dorosłych.";
        break;
    default:
        echo "Nieznana kategoria.";
}

Komentarz i wyjaśnienie kodu

Pierwszy blok if/elseif/else sprawdza dwa warunki po kolei — PHP wykonuje TYLKO PIERWSZY pasujący blok, resztę pomija. Zwróć uwagę na && (AND) w drugim warunku — oba warunki (wiek >= 13 ORAZ zgoda rodzica) muszą być prawdziwe naraz. Drugi fragment pokazuje switch — dużo czytelniejszy niż seria elseif, gdy sprawdzasz wiele konkretnych wartości TEJ SAMEJ zmiennej. break na końcu każdego case jest konieczny — bez niego PHP "przeleciałby" też przez kolejne warianty.

Ćwiczenie samodzielne

Dodaj do przykładu trzeci poziom kategorii wiekowej "NC-17" w switch, z odpowiednim komunikatem.

Zadania do pracy własnej

  1. Napisz skrypt sprawdzający, czy podana z góry liczba (zmienna) jest parzysta czy nieparzysta, i wypisujący odpowiedni komunikat.

  2. Napisz skrypt kalkulatora rabatu: jeśli wartość koszyka (zmienna) przekracza 200 zł, przyznaj 10% rabatu, w przeciwnym razie 0%. Wypisz cenę końcową.

  3. Napisz skrypt oceniający ocenę filmu (zmienna z liczbą gwiazdek 1-5) za pomocą switch, wypisujący słowny komentarz dla każdej wartości (np. 5 = "Arcydzieło", 1 = "Nie polecam") oraz domyślny komunikat dla nieprawidłowej wartości (np. 0 albo 6).

Typowe błędy

Częsty błąd to użycie = (przypisanie) zamiast == albo === (porównanie) w warunku if — if ($x = 5) zawsze będzie prawdziwe, bo to PRZYPISUJE 5 do $x, a nie porównuje. Drugi błąd: zapomnienie break w switch, przez co program "spada" do kolejnych case. Trzeci: użycie == zamiast === tam, gdzie typ danych ma znaczenie, co prowadzi do zaskakujących wyników przy porównaniach tekstu z liczbą.

Nawiązanie do egzaminu zawodowego

To realizacja efektu INF.03.5.2.5 ("stosuje instrukcje sterujące skryptowych języków programowania") — bezpośrednio sprawdzane w części praktycznej egzaminu przy analizie i pisaniu kodu PHP.