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; }

if.phpphp
<?php
$wiek = 16;
if ($wiek >= 18) {
    echo 'normalny';
} elseif ($wiek >= 13) {
    echo 'młodzieżowy';
} else {
    echo 'dziecięcy';
}
Wynik
młodzieżowy
  1. Najpierw 16 >= 18: fałsz, więc pierwszy blok zostaje pominięty.
  2. Następnie 16 >= 13: prawda, więc echo wypisuje młodzieżowy. Dalej nie sprawdzamy else.
  3. >= oznacza większe lub równe. Dla wieku 12 wykona się else, dla 18 pierwszy blok.
  4. elseif i else są opcjonalne. Nie dopisuj średnika tuż po if (...), 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; }

switch.phpphp
<?php
$gatunek = 'komedia';
switch ($gatunek) {
    case 'komedia':
        echo 'Coś lekkiego';
        break;
    case 'dokument':
        echo 'Poznaj fakty';
        break;
    default:
        echo 'Wybierz film';
}
Wynik
Coś lekkiego
  1. switch sprawdza $gatunek. case komedia pasuje, więc wykonuje echo.
  2. break kończy switch; bez niego program przeszedłby do instrukcji następnego case, nawet bez zgodności wartości.
  3. default dział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

logika.phpphp
<?php
$wiek = 16;
$legitymacja = true;
if ($wiek < 26 && $legitymacja) {
    echo 'rabat';
}
Wynik
rabat
  1. && wymaga obu prawdziwych warunków.
  2. || wystarczy jeden prawdziwy warunek; !$legitymacja jest prawdą, gdy legitymacja ma wartość false.
  3. 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.

Ta interakcja wymaga włączonego JavaScriptu.

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

public/podstawy/03-warunki.phpphp
<?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.

Oczekiwany rezultat
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ć

  1. Ułożysz warunki we właściwej kolejności i przetestujesz wartości na granicach przedziałów.
  2. Potrafisz wskazać w kodzie przyczynę wyniku i zaplanować próbę błędnych danych.
  3. 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ę →
Źródła i dalsza nauka