W budowie
Materiał edukacyjny · Informatyka

CZĘŚĆ 03

Warunki

PPrezentacja dla nauczyciela

Walidacja danych to w istocie seria if-ów. Kolejność gałęzi decyduje o tym, czy warunek zadziała — i jest punktowana.

Warunek if i else

Warunek if wykonuje blok tylko wtedy, gdy wyrażenie jest prawdziwe. Blok zamykamy nawiasami klamrowymi, a po if zawsze idzie nawias okrągły z warunkiem.

else obsługuje sytuację przeciwną, a elseif pozwala sprawdzić kolejny przypadek bez zagnieżdżania. PHP sprawdza warunki po kolei i wykonuje tylko pierwszy pasujący blok.

Porównanie zapisujemy podwójnym znakiem równości ==. Pojedyncze = to przypisanie i w warunku prawie zawsze jest błędem — dlatego lepiej używać ===, które porównuje też typ.

$punkty = 14;
$prog = 12;

if ($punkty >= $prog) {
    echo 'Zaliczone';
} elseif ($punkty >= $prog - 2) {
    echo 'Zaliczone warunkowo';
} else {
    echo 'Brak zaliczenia';
}
1. Co wykonuje blok if?
2. Czym różni się == od ===?
3. Który blok wykona PHP?

Operatory porównania i logiczne

Do porównań służą >, <, >=, <=, == i !=. Do łączenia warunków używamy && (oba muszą być prawdziwe), || (wystarczy jeden) oraz ! (zaprzeczenie).

Warto znać różnicę między and a &&: słowne operatory mają niższy priorytet niż przypisanie, więc $x = true and false ustawi $x na prawdę. W praktyce używamy znaków.

Puste wartości — 0, '', null, [] — są w warunku fałszem. Dzięki temu if ($imie) sprawdza, czy pole nie jest puste.

$wiek = 17;
$zgoda = true;

if ($wiek >= 18 || ($wiek >= 16 && $zgoda)) {
    echo 'Mozna zapisac na kurs';
} else {
    echo 'Brak warunkow';
}

echo '<p>Puste pole: ' . (false ? 'tak' : 'nie') . '</p>';
4. Kiedy && daje prawdę?
5. Co oznacza wykrzyknik w warunku?
6. Która wartość jest fałszem?

switch i skrót warunkowy

switch wygodnie zastępuje długi łańcuch elseif, gdy porównujemy tę samą zmienną z wieloma wartościami. Każdy case kończymy break, inaczej PHP wykona także kolejne przypadki.

Skrót warunek ? wartość1 : wartość2 zwraca jedną z dwóch wartości w jednym wyrażeniu. Nadaje się do drobnych decyzji, nie do bloków kodu.

Od PHP 8 dostępne jest też match, które porównuje ściśle i nie wymaga break. Na egzaminie INF.03 najczęściej wystarczy switch i operator warunkowy.

$ocena = 4;

switch ($ocena) {
    case 5:
        echo 'Bardzo dobry';
        break;
    case 4:
        echo 'Dobry';
        break;
    default:
        echo 'Inna ocena';
}

echo '<p>Status: ' . ($ocena >= 3 ? 'zdane' : 'poprawa') . '</p>';
7. Czego brak w case powoduje?
8. Co zwraca operator warunkowy?
9. Do czego służy default w switch?

Ćwiczenia