else
Ключевое слово "else" в PHP — управляющая конструкция, выполняющая блок кода, когда условие "if" ложно.
Ключевое слово PHP else
else — это дополнение к оператору if в PHP. Сам по себе if лишь решает, нужно ли выполнить блок кода; в паре с else вы задаёте запасной вариант, который выполняется всякий раз, когда условие if принимает значение false. Вместе они выражают простую ветку: «сделай это — иначе сделай то».
На этой странице рассматриваются точный синтаксис, разница между else, elseif и цепочкой операторов if, альтернативный синтаксис с двоеточием для HTML-шаблонов, а также типичные ошибки (например, путаница между = и ==).
Синтаксис
Блок else может стоять только непосредственно после if (или после elseif). Он не принимает собственного условия:
<?php
if (condition) {
// runs when condition is truthy
} else {
// runs when condition is falsy
}Выполняется ровно один из двух блоков — никогда оба и никогда ни один. Ветка else перехватывает всё, что не удовлетворило условию if, поэтому вручную формулировать противоположное условие не нужно.
Простой пример
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} else {
echo "Number is not 4";
}
// Output: Number is not 4Поскольку $myNumber равно 5, условие $myNumber == 4 принимает значение false, и управление переходит к блоку else.
Что считается «ложным»?
Блок else выполняется всякий раз, когда условие if является ложным (falsy) — не только когда оно буквально равно false. PHP считает ложными следующие значения: false, 0, 0.0, "0", "" (пустая string), null и пустой array []. Всё остальное считается истинным.
<?php
$cart = [];
if ($cart) {
echo "You have items in your cart.";
} else {
echo "Your cart is empty."; // an empty array is falsy
}
// Output: Your cart is empty.Это удобно для проверок вида «есть ли здесь что-нибудь?», но будьте внимательны: "0" и 0 тоже ложные, поэтому значение, которое вас интересует, может попасть в ветку else. Когда нужна точная проверка, используйте явное сравнение (if ($x === 0)) вместо проверки на истинность.
else vs elseif vs отдельные if
Простая конструкция if/else даёт лишь два исхода. Когда нужно больше, используйте elseif вместо нескольких независимых операторов if:
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} else {
echo "Grade: C or lower";
}
// Output: Grade: BЦепочка останавливается на первой подходящей ветке, поэтому порядок важен — самые специфичные или наибольшие условия ставьте первыми. Два отдельных блока if вместо одного будут вычислять оба условия независимо и могут вывести две оценки. Подробное сравнение — на странице PHP if, else, elseif.
Альтернативный синтаксис с двоеточием
При смешивании PHP и HTML в шаблоне стиль с фигурными скобками бывает трудно читать. PHP предлагает альтернативный синтаксис: вместо { используется :, а блок закрывается с помощью endif:
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Оба стиля работают одинаково; синтаксис с двоеточием просто делает шаблоны аккуратнее.
Вложенность
Конструкция if/else может находиться внутри другой ветки else. Каждый else всегда относится к ближайшему непарному if:
<?php
$age = 17;
$hasGuardian = true;
if ($age >= 18) {
echo "Admitted.";
} else {
if ($hasGuardian) {
echo "Admitted with a guardian.";
} else {
echo "Not admitted.";
}
}
// Output: Admitted with a guardian.Если вложенность превышает один-два уровня, конструкция elseif или оператор switch обычно читаются лучше.
Частая ошибка: = вместо ==
Распространённая ошибка — написать = (присваивание) вместо == (сравнение). Строка ниже присваивает 4 переменной $x, и поскольку 4 является истинным значением, ветка if выполняется всегда — ветка else становится недостижимой:
<?php
$x = 1;
if ($x = 4) { // assignment, not comparison!
echo "Always runs";
} else {
echo "Never runs";
}
// Output: Always runsИспользуйте == для нестрогого сравнения или === для строгого (с учётом типов). Все операторы перечислены на странице операторы сравнения.
Тернарный оператор: краткая форма для простых случаев
Когда обе ветки лишь возвращают значение, тернарный оператор ?: является компактной альтернативой полной конструкции if/else:
<?php
$age = 20;
$status = $age >= 18 ? "adult" : "minor";
echo $status;
// Output: adultИспользуйте его для коротких однозначных решений — многострочная логика остаётся понятнее в виде обычного if/else.
Резюме
elseвыполняется только когда предшествующее условиеif(илиelseif) является ложным; выполняется ровно одна ветка.- «Ложными» считаются
false,0,"",nullи[]— не только буквальноеfalse. - Используйте
elseifдля более двух исходов и синтаксис с двоеточием/endifвнутри HTML-шаблонов. - Следите за разницей между
=и==, и применяйте тернарный?:, когда нужно лишь выбрать значение.