Оператор if-else в PHP: Полное руководство
Изучите операторы if, else и elseif в PHP: синтаксис, вложенность, шаблонный синтаксис и тернарный оператор с примерами кода.
Условные операторы позволяют программе выбирать разные пути в зависимости от того, что истинно в момент выполнения. В PHP операторы if, else и elseif являются основой принятия решений. В этой главе рассматривается каждая форма, условия, которые ими управляют, альтернативный шаблонный синтаксис и распространённые ошибки, которых следует избегать.
На этой странице рассматриваются простой if, добавление ветви else, цепочки условий с elseif, вложенность, синтаксис с двоеточием и endif для шаблонов, а также краткий тернарный оператор.
Оператор if
Оператор if выполняет блок кода только тогда, когда его условие равно true. Условие помещается в круглые скобки; выполняемый блок — в фигурные.
if (condition) {
// runs only when condition is true
}Условием может быть любое выражение, которое PHP может интерпретировать как boolean. Операторы сравнения (>, <, >=, <=, ==, ===, !=) и логические операторы (&&, ||, !) — обычные строительные блоки; полный список см. в разделе Операторы PHP.
<?php
$temperature = 30;
if ($temperature > 25) {
echo "It's warm outside.";
}
?>Поскольку 30 > 25 равно true, выводится It's warm outside.. Если бы условие было ложным, ничего бы не вывелось и PHP просто перешёл бы дальше.
Добавление ветви else
else предоставляет резервный блок, который выполняется, когда условие if является ложным. Выполняется ровно один из двух блоков — никогда оба и никогда ни один.
Здесь $number > 0 истинно, поэтому выполняется первый блок и выводится 5 is a positive number. Если задать $number равным -3, первый блок будет пропущен и выполнится else, выведя -3 is a negative number.
Внимание на оператор.
=присваивает значение, тогда как==сравнивает. Записьif ($number = 0)молча присваивает$numberзначение0и интерпретируется как false — классическая ошибка. Для сравнений используйте==(или строгий===, который также проверяет тип).
Проверка нескольких условий с помощью elseif
Когда результатов больше двух, можно составить цепочку условий с помощью elseif. PHP проверяет каждое условие по порядку и выполняет первое истинное; если ни одно не совпадает, выполняется необязательный блок else.
При $number = 0 первое условие (> 0) ложно, поэтому PHP переходит к elseif (== 0), которое истинно, и выводит 0 is zero. Как только ветвь совпадает, остаток цепочки пропускается — порядок имеет значение, поэтому ставьте наиболее специфичные условия первыми.
Можно добавлять столько ветвей elseif, сколько необходимо. Когда одно значение сравнивается с множеством фиксированных вариантов, оператор switch зачастую нагляднее длинной цепочки elseif.
Вложенные операторы if
Блок if может содержать другой if для принятия решений, зависящих от предыдущего. Держите вложенность неглубокой — более двух-трёх уровней, как правило, сигнализирует о том, что логику следует разбить на функции.
<?php
$number = 5;
if ($number > 0) {
if ($number % 2 == 0) {
echo "$number is a positive even number";
} else {
echo "$number is a positive odd number";
}
} else {
echo "$number is not positive";
}
?>Внешний if проверяет, что число положительное; внутренний if затем проверяет, является ли оно чётным ($number % 2 == 0). Поскольку 5 положительное и нечётное, выводится 5 is a positive odd number.
Альтернативный синтаксис (с двоеточием)
PHP также предлагает форму на основе двоеточия, заканчивающуюся endif. Она удобна, когда условия оборачивают HTML в шаблонах, где легко потерять незакрытые фигурные скобки.
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please sign in.</p>
<?php endif; ?>Поведение идентично форме с фигурными скобками — if (...): заменяет if (...) {, а endif; заменяет закрывающую }.
Тернарный оператор
Для простого присваивания по принципу «либо/либо» тернарный оператор ?: сжимает if/else в одно выражение: условие ? значение_если_истина : значение_если_ложь.
<?php
$age = 20;
$status = ($age >= 18) ? "adult" : "minor";
echo $status; // adult
?>Это эквивалентно четырёхстрочному блоку if/else. Используйте его только для коротких условий; вложенные тернарные операторы быстро становятся нечитаемыми.
Резюме
ifвыполняет блок, когда его условие истинно;elseпредоставляет запасной вариант.elseifдобавляет дополнительные условия в цепочку, и побеждает первая истинная ветвь.- Операторы
ifмогут быть вложенными, но держите вложенность неглубокой. - Синтаксис с двоеточием и
endifудобен внутри HTML-шаблонов, а тернарный?:сокращает простые выборы «либо/либо». - Всегда используйте для сравнений
==/===, а не присваивание=.
Далее изучите циклы PHP, чтобы повторять код, пока условие выполняется, и ознакомьтесь с переменными PHP — значениями, которые проверяют ваши условия.