Menu

Instrukcje if, elseif i else w PHP z przykładami

if (warunek) { ... } wykonuje blok tylko wtedy, gdy warunek jest prawdziwy, elseif sprawdza kolejny warunek, a else działa, gdy żaden nie pasował. Strona opisuje elseif vs else if, && i ||, wartości traktowane jako prawda i składnię if: endif; w szablonach HTML.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

if (condition) { ... } wykonuje swój blok tylko wtedy, gdy warunek jest prawdziwy. Dodaj elseif (other condition) { ... } dla kolejnych przypadków i else { ... } dla wszystkiego, co zostało. PHP sprawdza warunki od góry i wykonuje tylko pierwszy pasujący blok.

Zmień $temperature i uruchom ponownie. Ponieważ sprawdzanie idzie od góry do dołu, 24 zatrzymuje się na drugim warunku i nigdy nie dociera do >= 10, choć on też jest prawdziwy. Układaj warunki od najbardziej szczegółowego do najbardziej ogólnego.

elseif vs else if

Z nawiasami klamrowymi elseif i else if robią to samo. else if to technicznie else, którego ciałem jest nowe if, ale wynik jest identyczny.

Różnica pojawia się tylko w składni z dwukropkiem, używanej w szablonach (kolejne sekcje). Tam else if psuje kod:

<?php $score = 72; ?>
<?php if ($score >= 90): ?>
    <p>A</p>
<?php else if ($score >= 60): ?>
    <p>Passed</p>
<?php endif; ?>
PHP Parse error:  syntax error, unexpected token "if", expecting ":" in /home/index.php on line 4

Pisz elseif jako jedno słowo, a nigdy nie spotkasz tego błędu.

Wiele warunków z && i ||

&& (i) wymaga, aby obie strony były prawdziwe, || (lub) wymaga co najmniej jednej, a ! odwraca warunek. PHP przestaje obliczać, gdy tylko odpowiedź jest znana, więc w $user !== null && $user['active'] druga część wykonuje się tylko wtedy, gdy użytkownik istnieje.

Gdy mieszasz && i ||, dodaj nawiasy: && wiąże silniej, a nawiasy sprawiają, że intencja jest oczywista dla następnego czytelnika. PHP ma też słowa kluczowe and i or, ale mają niższy priorytet niż =, więc $ok = true and false; ustawia $ok na true. Trzymaj się && i ||.

Co liczy się jako prawda w if

Warunek nie musi być wartością logiczną. PHP go konwertuje, a fałszem jest kilka wartości: false, 0, 0.0, "", "0", [] i null. Wszystko inne jest prawdą, także "false", " " i "0.0".

Jak if ($x) widzi każdą wartość
Point at or tap a cell to read it as PHP.
$xboolempty
false
0
0.0
""
"0"
null
[]
" "
"0.0"
"a"
[0]
1
Every cell computed by PHP 8.3.19.

Dlatego if ($items) to popularny sposób powiedzenia „tablica nie jest pusta”. Kłopoty sprawia wiersz "0": pole formularza, w którym ktoś wpisał 0, to niepusty łańcuch, a mimo to if ($_POST['qty']) traktuje je jako fałsz. Porównuj jawnie (if ($qty !== '')), gdy zero jest poprawną odpowiedzią. Te same zasady decydują o tym, co zwraca empty().

if else w HTML z if: i endif;

Między znacznikami HTML łatwo zgubić nawiasy klamrowe. PHP ma składnię alternatywną: dwukropek po warunku, elseif ...: i else: dla pozostałych gałęzi oraz endif; na końcu. Uruchom ten blok, potem kliknij wyniki na karcie Page: każdy link wykonuje ten sam skrypt ponownie z nowym $_GET['score'].

<?= $score ?> to skrót od <?php echo $score; ?>. Ten sam styl z dwukropkiem istnieje dla pętli (foreach: endforeach;, while: endwhile;) i to go używa większość szablonów PHP.

if w jednej linii i operator trójargumentowy

Pojedyncza instrukcja może stać po warunku bez nawiasów klamrowych. To działa, ale następna dopisana linia nie znajdzie się w if, dlatego wiele przewodników stylu zawsze wymaga nawiasów. Aby wybrać jedną z dwóch wartości, operator trójargumentowy jest krótszy niż pełne if/else.

Gdy jedną zmienną porównujesz z wieloma dokładnymi wartościami, wyrażenie match czyta się lepiej niż długi łańcuch elseif.

Wczesny return zamiast zagnieżdżania

Głęboko zagnieżdżone bloki if trudno śledzić. W funkcji najpierw sprawdź przypadki błędne i od razu wykonaj return. Główna logika stoi wtedy przy lewej krawędzi.

Częsty błąd: = zamiast == w warunku

Pojedyncze = przypisuje. if ($role = 'admin') zapisuje 'admin' w $role, a potem testuje ten łańcuch, który jest prawdą. Blok wykonuje się dla każdego użytkownika, a $role jest teraz w dodatku błędne.

Do porównań używaj ===, chyba że masz powód, by chcieć żonglowania typami. Niektórzy piszą stałą najpierw (if ('admin' === $role)), żeby brakujące = stało się błędem, a nie cichym przypisaniem.

Najczęściej zadawane pytania

Czym różni się elseif od else if w PHP?

Z nawiasami klamrowymi działają tak samo: else if to else, którego ciałem jest kolejne if. W składni z dwukropkiem (if (...): ... endif;) działa tylko elseif, a else if to błąd parsowania. Używanie elseif wszędzie omija tę różnicę.

Jak sprawdzić kilka warunków w instrukcji if w PHP?

Połącz je przez && (wszystkie muszą być prawdziwe) albo || (co najmniej jeden): if ($age >= 18 && $hasTicket) { ... }. Gdy mieszasz oba, użyj nawiasów, na przykład if ($isAdmin || ($isOwner && $isActive)).

Jak zapisać instrukcję if w jednej linii w PHP?

Pojedyncza instrukcja może stać po warunku bez nawiasów klamrowych: if ($debug) echo 'debug mode';. Aby wybrać jedną z dwóch wartości w jednej linii, użyj operatora trójargumentowego: $label = $count === 1 ? 'item' : 'items';.

Jak używać if else w HTML w PHP?

Użyj składni alternatywnej, która dobrze czyta się między znacznikami HTML: <?php if ($loggedIn): ?> <p>Welcome back</p> <?php else: ?> <a href="/login">Log in</a> <?php endif; ?>.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ