Урок 7: Условные конструкции в PHP (if, else, elseif)

На 7-м уроке мы разберем условные конструкции. Это основа логики любого приложения. После этого урока ты сможешь создавать программы, которые «думают» и принимают решения.

Зачем нужны условия?

Программы без условий похожи на робота, который выполняет команды строго по списку, без гибкости. Условные конструкции позволяют коду анализировать данные и действовать в зависимости от ситуации. Например:

  • Если пользователь ввел правильный пароль — пусти его в систему.
  • Если товар в корзине стоит больше 5000 рублей — дай скидку 10%.
  • Если сегодня пятница — покажи напоминание о вечеринке.

В PHP для этого используются конструкции ifelseelseif. Давай разбираться по порядку.

Конструкция if

Самая простая форма условия, «если выполняется условие, сделай что-то».

if (условие) {
    // Код, который выполнится, если условие истинно (true)
}

Пример: Проверка возраста.

$age = 20;

if ($age >= 18) {
    echo "Добро пожаловать в наш клуб!";
}

Если переменная $age больше или равна 18, код выведет приветствие. Иначе — ничего не произойдет.

Как работают условия?

Условие в скобках () всегда возвращает логическое значение (true или false). PHP автоматически преобразует другие типы данных в boolean:

  • 0"" (пустая строка), null → false.
  • Любое ненулевое число или непустая строка → true.

Пример: Проверка пароля.

$userPassword = "qwerty123";
$correctPassword = "qwerty123";

if ($userPassword == $correctPassword) {
    echo "Пароль верный!";
}

Конструкция else

Что, если мы хотим обработать оба сценария и когда условие верно и когда нет? Для этого используется else:

if (условие) {
    // Код для true
} else {
    // Код для false
}

Пример: Тот же пароль, но с обработкой ошибки.

if ($userPassword == $correctPassword) {
    echo "Добро пожаловать!";
} else {
    echo "Пароль неверный. Попробуйте еще раз.";
}

Конструкция elseif

Иногда нужно проверить несколько условий подряд. Для этого подходит elseif (или else if):

if (условие1) {
    // Код 1
} elseif (условие2) {
    // Код 2
} else {
    // Код, если все условия ложны
}

Пример: Определение времени суток.

$time = date("H"); // Текущий час (0-23)

if ($time < 6) {
    echo "Доброй ночи!";
} elseif ($time < 12) {
    echo "Доброе утро!";
} elseif ($time < 18) {
    echo "Добрый день!";
} else {
    echo "Добрый вечер!";
}

PHP проверяет условия сверху вниз. Как только находится истинное (true), выполняется его блок, а остальные условия игнорируются.

Альтернативный синтаксис

В PHP есть альтернативный синтаксис для условий, с использованием двоеточия вместо фигурных скобок. Часто используется в шаблонах:

if ($x > 10):
    echo "X больше 10";
elseif ($x == 10):
    echo "X равен 10";
else:
    echo "X меньше 10";
endif;

Вложенные условия

Условия можно вкладывать друг в друга. Например:

$age = 25;
$hasSubscription = true;

if ($age >= 18) {
    if ($hasSubscription) {
        echo "Доступ разрешен!";
    } else {
        echo "Купите подписку.";
    }
} else {
    echo "Доступ запрещен.";
}

Не увлекайтесь глубокой вложенностью. Если условий больше 3-4, возможно, стоит переписать код через elseif или функции.

Практические задачи

Теперь закрепим знания на практике. Попробуй решить задачи самостоятельно, а потом сверься с решениями.

Задача 1: Проверка четности числа

Напиши скрипт, который определяет, является ли число четным.

$number = 10;

// Твой код здесь

Решение:

php
if ($number % 2 == 0) {
    echo "Число $number четное.";
} else {
    echo "Число $number нечетное.";
}

Задача 2: Калькулятор ИМТ

Рассчитай индекс массы тела (ИМТ) и выведи результат:

  • ИМТ < 18.5 → «Недостаточный вес».
  • 18.5 ≤ ИМТ < 25 → «Норма».
  • ИМТ ≥ 25 → «Избыточный вес».

Формула: ИМТ = вес (кг) / (рост (м) * рост (м)).

$weight = 70; // кг
$height = 1.75; // метры

// Твой код здесь

Решение:

$bmi = $weight / ($height * $height);

if ($bmi < 18.5) {
    echo "ИМТ: $bmi. Недостаточный вес.";
} elseif ($bmi < 25) {
    echo "ИМТ: $bmi. Норма.";
} else {
    echo "ИМТ: $bmi. Избыточный вес.";
}

Задача 3: Система скидок

Магазин дает скидки в зависимости от суммы покупки:

  • От 5000 руб. → скидка 5%.
  • От 10000 руб. → скидка 10%.
  • От 20000 руб. → скидка 15%.

Напиши код, который рассчитывает итоговую сумму.

$total = 15000; // Сумма покупки

// Твой код здесь

Решение:

if ($total >= 20000) {
    $discount = 15;
} elseif ($total >= 10000) {
    $discount = 10;
} elseif ($total >= 5000) {
    $discount = 5;
} else {
    $discount = 0;
}

$finalTotal = $total - ($total * $discount / 100);
echo "Сумма с скидкой $discount%: $finalTotal руб.";

Частые ошибки

  1. Путаница между = и ==
    • = — присвоение.
    • == — сравнение.

    Неправильно:

    if ($x = 10) { ... } // Присвоит $x значение 10, условие всегда true
  2. Пропуск фигурных скобок
    Без скобок условие применяется только к следующей строке:

    if ($x > 5)
        echo "A";
        echo "B"; // Выведет "B" всегда!
  3. Сравнение строк без учета регистра
    Используй strtolower() или strcasecmp():

    if (strtolower($password) == "secret") { ... }

Хочешь больше практики? Переходи к полному курсу по PHP для начинающих.