Instrukcje warunkowe if, elseif i else

🎯 Po tej lekcji sprawisz, że program zareaguje różnie na różne sytuacje.

Wyobraź sobie, że Ola kupuje bilet do kina. Kasjer patrzy na jej wiek i decyduje, ile zapłaci. Właśnie to robi instrukcja if w PHP — sprawdza warunek i wykonuje odpowiedni fragment kodu.

Podstawowa instrukcja if

<?php
declare(strict_types=1);

$wiek = 20;

if ($wiek >= 18) {
    echo 'Jesteś dorosły.';
}
// wynik: Jesteś dorosły.

PHP sprawdza warunek w nawiasach. Jeśli jest prawdziwy (true), wykonuje kod w klamrach {}. Jeśli fałszywy (false) — pomija go całkowicie.

else — co zrobić, gdy warunek nie jest spełniony

<?php
declare(strict_types=1);

$wiek = 15;

if ($wiek >= 18) {
    echo 'Możesz wejść.';
} else {
    echo 'Wstęp tylko dla dorosłych.';
}
// wynik: Wstęp tylko dla dorosłych.

Blok else wykonuje się wtedy, gdy warunek if jest fałszywy. Zawsze jeden z tych bloków zostanie wykonany — nigdy oba naraz.

elseif — wiele warunków po kolei

Co jeśli masz więcej niż dwie możliwości? Użyj elseif:

<?php
declare(strict_types=1);

$wiek = 8;

if ($wiek < 12) {
    $cena = 10;        // dziecko
} elseif ($wiek >= 65) {
    $cena = 15;        // senior
} else {
    $cena = 25;        // normalny
}

echo 'Cena biletu: ' . $cena . ' zł';
// wynik: Cena biletu: 10 zł

PHP sprawdza warunki od góry do dołu i zatrzymuje się przy pierwszym prawdziwym. Reszta jest pomijana.

Operatory porównania

| Operator | Znaczenie | Przykład | |----------|-----------|---------| | == | równe (luźne) | 5 == '5'true | | === | identyczne (ścisłe) | 5 === '5'false | | != | różne | 5 != 3true | | < | mniejsze | 3 < 5true | | > | większe | 5 > 3true | | <= | mniejsze lub równe | 5 <= 5true | | >= | większe lub równe | 6 >= 5true |

💡 Wskazówka: Używaj === zamiast == wszędzie tam, gdzie typ ma znaczenie. Unikniesz zaskakujących wyników — np. 0 == false to true, ale 0 === false to już false.

Łączenie warunków

Czasem chcesz sprawdzić kilka rzeczy naraz. Użyj && (i) lub || (lub):

<?php
declare(strict_types=1);

$wiek  = 25;
$maKarte = true;

if ($wiek >= 18 && $maKarte) {
    echo 'Wejście bezpłatne.';
} else {
    echo 'Brak uprawnień.';
}
// wynik: Wejście bezpłatne.
⚠️ Uwaga: Nie pomijaj nawiasów klamrowych {}, nawet gdy masz tylko jedną instrukcję. Kod bez klamr jest trudniejszy do czytania i łatwo wkraść do niego błąd przy rozbudowywaniu.

Pełny przykład — kalkulator rabatu

<?php
declare(strict_types=1);

$kwota   = 250.0;
$vip     = true;

if ($vip && $kwota >= 200) {
    $rabat = 0.20;      // 20% dla VIP przy zakupach powyżej 200 zł
} elseif ($kwota >= 200) {
    $rabat = 0.10;      // 10% przy zakupach powyżej 200 zł
} else {
    $rabat = 0.0;       // brak rabatu
}

$doZaplaty = $kwota * (1 - $rabat);
echo 'Do zapłaty: ' . $doZaplaty . ' zł';
// wynik: Do zapłaty: 200 zł

W kolejnej lekcji zobaczysz switch i match — alternatywę dla długich łańcuchów elseif, gdy sprawdzasz jedną zmienną na wiele możliwych wartości.

Sprawdź się

Który operator sprawdza, czy dwie wartości są równe?

Co wyświetli poniższy kod? $wiek = 10; if ($wiek >= 18) { echo 'dorosły'; } else { echo 'niepełnoletni'; }

Które słowo kluczowe pozwala sprawdzić kolejny warunek, gdy poprzedni był fałszywy?

Ćwiczenie

Napisz skrypt, który na podstawie zmiennej $wiek wypisuje cenę biletu: dziecko (poniżej 12 lat) → 10 zł, senior (65 lat i więcej) → 15 zł, pozostałe osoby → 25 zł. Sprawdź działanie dla wartości 8, 30 i 70.

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

$wiek = 8;

if ($wiek < 12) {
    $cena = 10;
} elseif ($wiek >= 65) {
    $cena = 15;
} else {
    $cena = 25;
}

echo 'Cena biletu: ' . $cena . ' zł';
// wynik: Cena biletu: 10 zł