elseif/else if

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

?>