W3docs

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-шаблонов.
  • Следите за разницей между = и ==, и применяйте тернарный ?:, когда нужно лишь выбрать значение.

Практика

Практика
Что обозначает оператор 'else' в PHP?
Что обозначает оператор 'else' в PHP?
Was this page helpful?