(PHP 4, PHP 5, PHP 7, PHP 8)
Конструкция elseif
, как её имя и говорит есть сочетание
if
и else
. Аналогично
else
, она расширяет оператор if
для выполнения различных выражений в случае, когда условие начального оператора
if
эквивалентно
false
. Однако, в отличие от
else
, выполнение альтернативного
выражения произойдёт только тогда, когда условие оператора 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
. Первое выражение
elseif
(если оно есть) равное
true
будет выполнено. В PHP вы также можете
написать else if
(в два слова), и тогда поведение будет идентичным
elseif
' (в одно слово). Синтаксически значение
немного отличается (то же поведение, что и у C),
но в конечном итоге оба выражения приведут к одному и
тому же результату.
Выражение elseif
выполнится, если
предшествующее выражение if
и предшествующие
выражения elseif
эквивалентны
false
, а текущий
elseif
равен
true
.
Замечание: Заметьте, что
elseif
иelse if
будут равнозначны только при использовании фигурных скобок, как в примерах выше. Если используются синтаксис с двоеточием для определения условийif
/elseif
, возникает необходимость использованияelseif
в одном слове. Если разбитьelse if
на два слова, PHP выдаст ошибку разбора.
<?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;
?>