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';
}
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>';
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>';
Ćwiczenia
- 1Pojedynczy warunek ifpojedynczy if bez elseZadanie i podpowiedzi →
- 2Czy można wejść?warunek na wiekuZadanie i podpowiedzi →
- 3Czy cena jest w budżecie?porównanie z budżetemZadanie i podpowiedzi →
- 4Dostępny stanstan magazynu i warunekZadanie i podpowiedzi →
- 5Dodatnia, ujemna czy zerotrzy rozgałęzienia warunkuZadanie i podpowiedzi →
- 6Kaskada progów rosnącychkaskada progów rosnącychZadanie i podpowiedzi →
- 7Ocena na podstawie punktówprogi ocenZadanie i podpowiedzi →
- 8Funkcja obliczająca koszt wysyłkiprogi w funkcjiZadanie i podpowiedzi →
- 9Dwa warunki jednocześnieoperator && w warunkuZadanie i podpowiedzi →
- 10Jeden z dwóch warunkówoperator || w warunkuZadanie i podpowiedzi →
- 11Negacja logicznanegacja w warunkuZadanie i podpowiedzi →
- 12Dostęp na wydarzenie — warunek złożonywiek i zgoda rodziców razemZadanie i podpowiedzi →
- 13Porównanie ścisłeporównanie ścisłe ===Zadanie i podpowiedzi →
- 14Porównania ścisłe i luźnetekst z formularza a liczbaZadanie i podpowiedzi →
- 15Menu usług — switchwybór usługi przez switchZadanie i podpowiedzi →
- 16Operator warunkowy trójargumentowyoperator warunkowy ? :Zadanie i podpowiedzi →