elseif
Ключевое слово "elseif" в PHP — управляющая структура, которая добавляет дополнительное условие к оператору "if"
Ключевое слово elseif в PHP
elseif — это управляющая структура в PHP, которая добавляет дополнительное условие к оператору if. Её блок выполняется только тогда, когда все предыдущие условия оказались ложными и её собственное условие истинно. Вы можете цеплять столько клауз elseif, сколько нужно, при желании заканчивая цепочку else, который перехватывает все остальные случаи.
На этой странице рассматриваются синтаксис, порядок вычисления условий, альтернативный синтаксис с двоеточием, различие между elseif и else if (лёгкая ловушка для новичков) и распространённые ошибки.
Синтаксис
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP вычисляет условия сверху вниз и останавливается на первом истинном — выполняется его блок, а остальная часть цепочки (включая else) пропускается. Завершающий else необязателен; без него ничего не происходит, если все условия ложны.
Простой пример
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Поскольку $myNumber == 4 ложно, а $myNumber == 5 истинно, выполняется второй блок, и else никогда не достигается.
Цепочка из нескольких условий
elseif незаменим, когда нужно сопоставить значение с несколькими взаимоисключающими диапазонами. Первая подходящая ветка побеждает, поэтому располагайте условия от наиболее конкретных к наиболее общим:
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BОценка 82 не проходит первый тест (>= 90), но проходит второй (>= 80), поэтому $grade становится "B", а оставшиеся ветки пропускаются.
elseif vs else if
PHP принимает оба варианта — elseif (одним словом) и else if (двумя словами) — они ведут себя одинаково при использовании фигурных скобок:
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoИсключением является альтернативный синтаксис с двоеточием (см. ниже): там необходимо писать elseif одним словом. else if является синтаксической ошибкой внутри блока if: ... endif;. Чтобы избежать сюрпризов, многие руководства по стилю рекомендуют всегда использовать однословный elseif.
Альтернативный синтаксис с двоеточием
При смешивании PHP с HTML в шаблонах синтаксис с двоеточием зачастую читается лучше, чем фигурные скобки. Для закрытия блока используется endif;:
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentЭтот синтаксис хорошо сочетается с ключевым словом endif в HTML-шаблонах. Подробнее читайте в обзоре if / else / elseif.
Распространённые ошибки
=вместо==. Внутри условия=выполняет присваивание, а не сравнение. Используйте==для нестрогого сравнения или===для строгого (с учётом типа).- Порядок имеет значение. Поскольку побеждает первая истинная ветка, широкое условие, размещённое раньше, может перекрыть более конкретные условия ниже. В примере с оценками, если поставить
$score >= 70первым, каждый зачётный балл получил бы оценку"C". elseifтребует ведущегоif. Он не может стоять отдельно — он всегда принадлежит существующей цепочкеif.
Когда использовать elseif, а когда switch
Используйте elseif для диапазонов, составных условий или проверок по разным переменным. Когда нужно сравнить одно значение со многими фиксированными вариантами, оператор switch обычно выглядит чище.
Смотрите также
if— оператор, которыйelseifрасширяетelse— универсальная резервная веткаendif— закрывает форму с синтаксисом двоеточияswitch— многовариантное ветвление по одному значению