(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;
?>