На 7-м уроке мы разберем условные конструкции. Это основа логики любого приложения. После этого урока ты сможешь создавать программы, которые «думают» и принимают решения.
Зачем нужны условия?
Программы без условий похожи на робота, который выполняет команды строго по списку, без гибкости. Условные конструкции позволяют коду анализировать данные и действовать в зависимости от ситуации. Например:
- Если пользователь ввел правильный пароль — пусти его в систему.
- Если товар в корзине стоит больше 5000 рублей — дай скидку 10%.
- Если сегодня пятница — покажи напоминание о вечеринке.
В PHP для этого используются конструкции if
, else
, elseif
. Давай разбираться по порядку.
Конструкция 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; // Твой код здесь
Решение:
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 руб.";
Частые ошибки
- Путаница между
=
и==
=
— присвоение.==
— сравнение.
Неправильно:
if ($x = 10) { ... } // Присвоит $x значение 10, условие всегда true
- Пропуск фигурных скобок
Без скобок условие применяется только к следующей строке:if ($x > 5) echo "A"; echo "B"; // Выведет "B" всегда!
- Сравнение строк без учета регистра
Используйstrtolower()
илиstrcasecmp()
:if (strtolower($password) == "secret") { ... }
Хочешь больше практики? Переходи к полному курсу по PHP для начинающих.