elseif/else if

(PHP 4, PHP 5, PHP 7, PHP 8)

Конструкция elseif, как ясно из названия, объединяет конструкции if и else. Как и конструкция else, она расширяет инструкцию if, чтобы выполнять другую инструкцию тогда, когда PHP вычисляет выражение начальной конструкции if как false. Отличие от конструкции else состоит в том, что конструкция elseif выполнит альтернативное выражение только тогда, когда PHP вычислит условное выражение elseif как true. Следующий код, в зависимости от значений переменных, будет выводить «a больше b», «a равно b» или «a меньше b»:

<?php

if ($a > $b) {
echo
"a больше b";
} elseif (
$a == $b) {
echo
"a равно b";
} else {
echo
"a меньше b";
}

?>

Допустимо указывать больше одной конструкции elseif в одной инструкции if. PHP выполняет первое выражение elseif, которое вычисляет как true. В PHP допустимо писать else if в два слова, тогда поведение будет идентичным конструкции elseif в одно слово. Синтаксическое отличие есть (в языке C пишут в два слова), но в итоге оба выражения дадут один и тот же результат.

PHP выполнит инструкцию elseif только тогда, когда вычислит предшествующее выражение if и предшествующие выражения elseif как false, а текущее выражение elseif — как true.

Замечание: Заметьте, что записи elseif и else if будут равнозначны только в синтаксисе с фигурными скобками, как в приведённом примере. В синтаксисе с двоеточием для определения условий if и elseif, конструкция elseif пишется в одно слово. PHP выдаст ошибку синтаксического анализа и завершит работу, если запись конструкции else if разделена на два слова.

<?php

/* Некорректный способ: */
if ($a > $b):
echo
$a . " больше " . $b;
else if (
$a == $b): // Не скомпилируется.
echo "Строка выше вызывает фатальную ошибку.";
endif;


/* Корректный способ: */
if ($a > $b):
echo
$a . " больше " . $b;
elseif (
$a == $b): // Заметьте, тут одно слово.
echo $a . " равно " . $b;
else:
echo
$a . " не больше и не равно " . $b;
endif;

?>