Część 03 kursu PHP pod kątem INF.03: Warunki. Teoria w skrócie i 16 ćwiczeń z automatycznym sprawdzaniem — od if/else i kaskad progowych, przez operatory logiczne && i ||, po switch i operator trójargumentowy.
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.
$punkty = 14;
$prog = 12;
if ($punkty >= $prog) {
echo 'Zaliczone';
} elseif ($punkty >= $prog - 2) {
echo 'Zaliczone warunkowo';
} else {
echo 'Brak zaliczenia';
}
$punkty = 14;
$prog = 12;
if ($punkty >= $prog) {
echo 'Zaliczone';
} elseif ($punkty >= $prog - 2) {
echo 'Zaliczone warunkowo';
} else {
echo 'Brak zaliczenia';
}
Co wykonuje blok if?
Poprawna: b) Blok if działa tylko wtedy, gdy warunek jest prawdziwy.
Do porównań służą > , < , >= , <= , == i != . Do łączenia warunków używamy && (oba muszą być prawdziwe), || (wystarczy jeden) oraz ! (zaprzeczenie).
$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>';
$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>';
Kiedy && daje prawdę?
Poprawna: a) Koniunkcja wymaga prawdy po obu stronach.
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.
$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>';
$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>';
Czego brak w case powoduje?
Poprawna: d) Bez break PHP przechodzi do następnego przypadku.