INF.03 · Aplikacje internetowe PHP
Instrukcje warunkowe w PHP (if, else, switch)
Warunek wybiera jedną drogę.
- PHP8.3
- mysqli · MariaDB
- Praktyka i diagnoza
Po tej lekcji: Ułożysz warunki we właściwej kolejności i przetestujesz wartości na granicach przedziałów.
Zrozum mechanizm
if wykonuje blok przy prawdziwym warunku, elseif sprawdza kolejny, a else obsługuje pozostałe przypadki. Nawiasy klamrowe wyznaczają blok; wcięcia pomagają go zobaczyć. W łańcuchu uruchamia się pierwsza pasująca gałąź. Od szczegółowego warunku przejdź do ogólniejszego.
&& wymaga obu warunków, || przynajmniej jednego, ! zaprzecza. switch wybiera przypadek dla wartości; pamiętaj o break, jeśli nie chcesz przejścia dalej. Switch porównuje luźno, a match w PHP 8 porównuje ściśle i zwraca wartość. Nie mieszaj przypadkowo liczb z tekstem otrzymanym z formularza: najpierw waliduj dane.
Jak uruchamiać krótkie przykłady?
Każdy krótki przykład oznaczony własnym plikiem uruchamiaj osobno, nie doklejaj wszystkich definicji do jednego pliku. W edytorze zapisz go jako .php, a w terminalu tego folderu wpisz np. php for.php. Wtedy pokazane końce wierszy PHP_EOL są widoczne. W odpowiedzi HTML znak końca wiersza sam nie robi nowej linii na ekranie: użyj <br> albo znacznika <pre>. Wyświetl źródło pozwala zobaczyć tekst odpowiedzi.
Przykłady opisane jako fragment projektu wymagają paczki KINO / LAB i wcześniejszej konfiguracji. Nie uruchamiaj ich jako samodzielnych endpointów. Pełny plik niżej pokazuje kontekst. Funkcje h(), pole() i wymagajPost() są nasze; ich definicje wczytuje bootstrap.php.
if, elseif, else: jedna z kilku dróg
Program dobiera bilet do wieku. Warunek jest pytaniem o prawdę lub fałsz. Nawiasy okrągłe obejmują warunek, klamry instrukcje wybranej gałęzi.
Podstawowa forma: if (warunek) { instrukcje; } elseif (inny_warunek) { instrukcje; } else { instrukcje; }
<?php
$wiek = 16;
if ($wiek >= 18) {
echo 'normalny';
} elseif ($wiek >= 13) {
echo 'młodzieżowy';
} else {
echo 'dziecięcy';
}
młodzieżowy
- Najpierw 16 >= 18: fałsz, więc pierwszy blok zostaje pominięty.
- Następnie 16 >= 13: prawda, więc echo wypisuje młodzieżowy. Dalej nie sprawdzamy else.
-
>=oznacza większe lub równe. Dla wieku 12 wykona się else, dla 18 pierwszy blok. -
elseifielsesą opcjonalne. Nie dopisuj średnika tuż poif (...), bo odłączyłby blok od warunku.
switch: wybór na podstawie jednej wartości
Gdy wybierasz komunikat według gatunku filmu, możesz porównać tę samą wartość z kilkoma przypadkami.
Podstawowa forma: switch ($wartosc) { case wariant: instrukcje; break; default: instrukcje; }
<?php
$gatunek = 'komedia';
switch ($gatunek) {
case 'komedia':
echo 'Coś lekkiego';
break;
case 'dokument':
echo 'Poznaj fakty';
break;
default:
echo 'Wybierz film';
}
Coś lekkiego
- switch sprawdza
$gatunek. case komedia pasuje, więc wykonuje echo. -
breakkończy switch; bez niego program przeszedłby do instrukcji następnego case, nawet bez zgodności wartości. -
defaultdziała, gdy żaden case nie pasuje. switch używa porównania luźnego; nie mieszaj typów przypadków bez powodu.
Dwa warunki naraz: &&, || i !
Rabat przysługuje osobie, która ma legitymację i nie ukończyła 26 lat. To dwa pytania połączone w jeden warunek.
Podstawowa forma: warunekA && warunekB, warunekA || warunekB, !warunek
<?php
$wiek = 16;
$legitymacja = true;
if ($wiek < 26 && $legitymacja) {
echo 'rabat';
}
rabat
-
&&wymaga obu prawdziwych warunków. -
||wystarczy jeden prawdziwy warunek;!$legitymacjajest prawdą, gdy legitymacja ma wartość false. - Ustaw wiek 26, a potem legitymacja=false. W obu próbach tekst rabat przestanie się pojawiać.
Sprawdź w działaniu
Warunek wybiera jedną drogę — sprawdź w modelu
Model w przeglądarce wyjaśnia mechanizm na fikcyjnych danych. Nie wykonuje PHP ani zapytań SQL i nie tworzy kont. Prawdziwe skrypty uruchomisz lokalnie z paczki.
Przewidź rezultat, wykonaj próbę i wyjaśnij, która decyzja po stronie serwera decyduje o wyniku.
Uruchom krok po kroku
W przykładzie są umowne taryfy biletów, nie prawne zasady dopuszczenia do filmu. Sprawdź wiek 12,13,17 i 18. Dodaj wariant wieku ujemnego jako błąd danych przed wyborem taryfy. Zapisz dla każdej próby, która gałąź wykona się i dlaczego.
Plik wzorcowy: public/podstawy/03-warunki.php
<?php
$wiek = 16;
if ($wiek >= 18) {
echo 'bilet normalny';
} elseif ($wiek >= 13) {
echo 'bilet młodzieżowy';
} else {
echo 'bilet dziecięcy';
}
$gatunek = 'komedia';
switch ($gatunek) {
case 'komedia': echo ' — coś lekkiego';
break;
case 'dokument': echo ' — poznaj fakty';
break;
default: echo ' — wybierz swój film';
}
Pobierz i odtwórz projekt
W „Źródłach i materiałach” na końcu pobierz KINO / LAB.zip. Rozpakuj całość; instrukcja START.txt opisuje konfigurację. Pierwsze 6 przykładów w public/podstawy działa bez bazy. Dalsze wymagają lokalnej MariaDB 11.4, importu schema.sql i lokalnego konta bazy z minimalnymi prawami. Gotowa paczka pokazuje całość, ale w tej lekcji wykonaj opisane kroki i własne zadanie.
Ćwiczenie z pomocą · samodzielna praca
Twoja próba — podpowiedzi otwieraj po kolei
Zbuduj taryfę: wiek poniżej 0 to błąd, do 12 dziecięcy,13–17 młodzieżowy, od 18 normalny.
Testy: -1→błąd,12→dziecięcy,13→młodzieżowy,17→młodzieżowy,18→normalny.
? Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź
Odszukaj wskazany plik i zapisz przewidywany rezultat przed zmianą.
Krok 2 — pokaż podpowiedź
Zmień jedną rzecz. Sprawdź metodę żądania, dane i odpowiedź lub wynik programu.
Krok 3 — pokaż podpowiedź
Wykonaj próbę graniczną lub błędną. Porównaj także stan bazy lub sesji, nie tylko komunikat.
Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.
Podsumowanie
Co warto zapamiętać
- Ułożysz warunki we właściwej kolejności i przetestujesz wartości na granicach przedziałów.
- Potrafisz wskazać w kodzie przyczynę wyniku i zaplanować próbę błędnych danych.
- Nie oddajesz haseł, pliku config.local.php ani wartości cookie.
Dalej na swoim koncie
Rozgrzewki, quiz i zadania są w biurku ucznia.
Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.
Zaloguj się →