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 != 3 → true |
| < | mniejsze | 3 < 5 → true |
| > | większe | 5 > 3 → true |
| <= | mniejsze lub równe | 5 <= 5 → true |
| >= | większe lub równe | 6 >= 5 → true |
=== 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.
{}, 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?
Pojedyncze = to przypisanie. == sprawdza równość (z konwersją typów). === sprawdza równość ścisłą (typ i wartość).
Co wyświetli poniższy kod? $wiek = 10; if ($wiek >= 18) { echo 'dorosły'; } else { echo 'niepełnoletni'; }
10 >= 18 to false, więc PHP wykonuje blok else i wyświetla 'niepełnoletni'.
Które słowo kluczowe pozwala sprawdzić kolejny warunek, gdy poprzedni był fałszywy?
W PHP używamy elseif (lub osobno else if). Słowa kluczowego elif w PHP nie ma.
Ć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ł