Instrukcje Warunkowe i Pętle w PHP
Wprowadzenie Kontrola Przepływu
Instrukcje warunkowe i pętle pozwalają wykonywać kod w zależności od warunków lub wielokrotnie powtarzać fragmenty logiki, co jest kluczowe dla dynamicznych stron PHP.
- Dynamiczne HTML: Logika warunkowa decyduje, który fragment HTML zostanie wysłany do przeglądarki.
- Pętle: Ułatwiają generowanie powtarzalnych elementów, takich jak listy czy wiersze tabeli.
Warunki Instrukcje Decyzyjne
1. Instrukcja if...elseif...else
Konstrukcja if wykonuje różne gałęzie kodu w zależności od spełnienia warunków logicznych.
$wynik = 72;
if ($wynik >= 80) {
echo "<p>Ocena: Bardzo dobry</p>";
} elseif ($wynik >= 50) {
echo "<p>Ocena: Dostateczny</p>";
} else {
echo "<p>Ocena: Niedostateczny</p>";
}
?>
2. Instrukcja switch
switch jest wygodny, gdy porównuje się jedną zmienną z wieloma stałymi wartościami.
$kolor = "zielony";
switch ($kolor) {
case "czerwony":
echo "Kolor alarmowy.";
break;
case "zielony":
case "niebieski":
echo "Kolor bezpieczny/spokojny.";
break;
default:
echo "Nieznany kolor.";
}
?>
Pętle Powtarzanie Logiki i Treści
1. Pętla for
Pętla for jest używana, gdy znana jest liczba iteracji, np. do generowania listy elementów.
echo "<ul>";
for ($i = 1; $i <= 3; $i++) {
echo "<li>Element numer $i</li>";
}
echo "</ul>";
?>
2. Pętla while
Pętla while działa tak długo, jak warunek pozostaje prawdziwy, więc dobrze nadaje się do sytuacji o nieznanej z góry liczbie powtórzeń.
$saldo = 50;
$koszt = 10;
$licznik = 0;
while ($saldo >= $koszt) {
$saldo -= $koszt;
$licznik++;
echo "<p>Wykonano operację $licznik. Saldo: $saldo zł.</p>";
}
?>
3. break i continue
break przerywa pętlę, a continue pomija bieżącą iterację i przechodzi do następnej.
for ($i = 1; $i <= 10; $i++) {
if ($i == 4) {
continue;
}
if ($i == 7) {
break;
}
echo "$i <br>";
}
?>
Wyzwanie Złożone Skrypty i HTML
Łączenie PHP z HTML w jednej strukturze pozwala czytelnie generować tabele, listy i formularze.
Generowanie Tabeli z Pętlą for
<tr><th>Liczba</th><th>Kwadrat</th></tr>
<?php
for ($i = 1; $i <= 5; $i++) {
$kwadrat = $i * $i;
?>
<tr>
<td><?php echo $i; ?></td>
<td><?php echo $kwadrat; ?></td>
</tr>
<?php } ?>
</table>
Ćwiczenie Zadania Praktyczne
Zadanie 1: Weryfikacja Dostępności (Podstawowe)
Sprawdź zmienne $czyZalogowany i $rola, aby wyświetlić jeden z trzech komunikatów o poziomie dostępu.
Zadanie 2: Dynamiczne Pole Wyboru (Ponadpodstawowe)
Użyj pętli for, aby wygenerować listę lat w elemencie <select>, zaznaczając domyślnie rok 2020.
Rozwiązania Zadania z Dostępem i Selectem
Rozwiązanie Zadania 1: Weryfikacja Dostępności
Skrypt wykorzystuje if / elseif / else, aby na podstawie roli i zalogowania wyświetlić odpowiedni komunikat.
<?php
/**
* Zadanie 1: Weryfikacja Dostępności
*/
$czyZalogowany = true;
$rola = "editor";
if ($czyZalogowany && $rola === "admin") {
echo "<p>Pełny dostęp</p>";
} elseif ($czyZalogowany && $rola === "editor") {
echo "<p>Dostęp tylko do edycji</p>";
} else {
echo "<p>Ograniczony dostęp</p>";
}
?>
Rozwiązanie Zadania 2: Dynamiczne Pole Wyboru
Pętla for generuje lata od 2025 do 2015, a rok 2020 oznaczony jest jako wybrany.
<?php
/**
* Zadanie 2: Dynamiczne Pole Wyboru
*/
?>
<select name="rok">
<?php
for ($rok = 2025; $rok >= 2015; $rok--) {
// Dla roku 2020 ustawiamy selected
$selected = ($rok == 2020) ? ' selected="selected"' : '';
echo "<option value=\"{$rok}\"{$selected}>{$rok}</option>";
}
?>
</select>
Materiały Narzędzia i Linki
- PHP Manual: Instrukcje kontroli przepływu.
- W3Schools: PHP Loops (pętle
for,while,foreach). - Dobra praktyka: Dla dużych bloków HTML można używać składni alternatywnej
if (...): ... endif;.