Внимание! На этой странице вы найдете материал урока из архивного курса по PHP. Курс был написан в 2024 году одним из первых учеников Codebra и, к моменту написания курса, опытным бэкэнд-разработчиком. К сожалению, курс не был дописан, а его автор молча пропал.
Полный список уроков доступен по тегу Архивный курс по PHP и на странице первого урока.
Основы условных конструкций в PHP
- Условные конструкции используются для управления ходом программы в зависимости от условий.
- Условные операторы позволяют выразить "да" и "нет" через
trueиfalse. - Блок
ifвыполняется при истинном условии, блокelse- при ложном.
Множественное ветвление
- Для обработки нескольких вариантов используется множественное ветвление.
- Пример: проверка возраста клиента для покупки билетов на мероприятие.
Инвертирование высказываний
- Инвертирование условия позволяет заменить исходное логическое выражение на противоположное.
- Оператор логического отрицания (
!) используется для инвертирования условий. - Примеры инвертирования сложных условий с использованием операторов
&&,||и==.
Улучшение читаемости кода
- Инвертирование условий упрощает код и повышает его читаемость.
- Примеры инвертирования условий для улучшения читаемости кода.
Задачи для практики
- Примеры задач на проверку четности числа, совершеннолетия, температуры, скидки на покупку, времени суток, оценки, дня недели, возраста и категории билета, а также проверку на отсутствие данных и число не больше определенного значения.
Следующий урок
- В следующем уроке будет рассмотрен альтернативный синтаксис условных конструкций.
В предыдущем уроке мы с вами изучили работу со строками. Давайте научимся управлять ходом нашей программы в разных условиях.
Как же мне нравятся условные конструкции, ни одна программа без них не обходится. Условные конструкции очень легки в понимании, а их использование — настоящее искусство.
Представьте, что вы идёте по улице, и все вокруг оборачиваются на вас. Вы проходите мимо магазина с выпечкой и чувствуете этот удивительный запах. Вам приходится выбирать: купить или пройти мимо? Этот выбор между «да» и «нет» можно обозначить как true и false, соответственно. Чтобы наше условие работало, нам нужно его реализовать:
<?php
$yes = true; // true также можно записать как и 1
if ($yes) { // if вход в условие, если пременная $yes равняется true
echo "Пойти";
} else { // else если условие не выполнилось, отработает этот блок кода
echo "Не пойти";
}
?>
После выполнения этого кода на экране выведется текст «Пойти», потому что переменная $yes равна true. В блоке if выполнится код при истинном результате условия (true), если будет false, то выполнится код в блоке else. Напишите сами сейчас вот таких простых пару штук примеров и вы всё поймёте.
Множественное ветвление
Что делать, если у нас есть два или три выбора? В этом случае поможет множественное ветвление. Представим, что к нам обратился клиент с просьбой доработать сайт для покупки билетов на мероприятие. Условие: человек должен быть не моложе 18 и не старше 50 лет. Клиент вводит свой возраст, а мы должны вывести, подходит ли он под это условие или нет.
Напишем код:
<?php
$age = 25;
if ($age < 18) { // Всегда начинается с этого момента
echo "Вы еще слишком молоды. Приходите когда подрастете.";
} elseif($age >= 18 && $age < 30) { // elseif позволяет делать
// множественное ветвление
echo "Вы в расцвете сил! Будем гулять всю ночь?"; // Распечатает это сообщение
} elseif ($age >= 30 && $age < 50) {
echo "Вы достигли зрелости. Ночь будет короткой :(";
} elseif ($age >= 50 && $age < 120) {
echo "Вы обладаете большим жизненным опытом. Но купить проход в клуб не выйдет.";
} else {
echo "Ой... вы ошиблись с возрастом или вам надо в книгу рекордов гинесса :)";
}
?>
В коде интерпретатор сначала зайдет в первый if. Если условие окажется ложным, он перейдет по цепочке вниз до блока else. Что касается оператора &&, о нем я писал в уроке про операторы в PHP. Он означает логическую операцию "И". Например, если 25 больше 18 "И" меньше 29, то оператор < не включает число 30.
Инвертирование высказываний в конструкции if-else
Инвертирование условия в PHP – это процесс, при котором исходное логическое выражение заменяется на противоположное. Для достижения этого используется оператор логического отрицания (!). Рассмотрим пример: если у нас есть условие if ($a > $b), его инвертированная версия будет выглядеть так: if (!($a > $b)), что эквивалентно if ($a <= $b).
При инвертировании сложных условий следует учитывать все логические операторы, такие как &&, ||, и . Например, условие if ($a $b && $c > $d) после инверсии станет if (!($a == $b && $c > $d)), что эквивалентно if ($a != $b || $c <= $d).
Инвертирование условий полезно для упрощения кода, повышения его читаемости и избегания вложенности.
Исходное условие:
<?php
$userAge = 18;
$hasID = true;
if ($userAge >= 18 && $hasID) {
echo "Access granted";
// Здесь мы пишем остальной код
} else {
echo "Access denied";
}
?>
Инвертированное условие:
<?php
$userAge = 18;
$hasID = true;
if (!($userAge >= 18 && $hasID)) {
echo "Access denied";
}
// Здесь остальной код
?>
В этих примерах мы с вами разобрали одно условие, где у нас есть два значения: возраст $userAge и удостоверение личности $hasId. В первом случае, если условие выполняется, мы сразу в этом блоке пишем остальной код программы, что может быть затруднительно. Во втором примере применено инвертирование: если условие не выполняется, выводится Access denied, а остальной код пишется ниже, что улучшает читаемость кода. Конечно, условие можно было написать и по-другому, но этим вы уже займётесь в задачах. Главное — потренируйтесь (по началу я тоже путался и задавался вопросом, зачем они нужны, но в реальном программировании они всегда выручают, поверьте мне).
Вы думаете это всё? В следующем уроке изучим альтернативный синтаксис условных конструкций. Решайте задачи и переходите к следующему уроку.
Задачи
- Проверка четности числа: Напишите программу, которая принимает число и выводит "Четное", если число четное, и "Нечетное" — если нечетное. (привет математика).
- Проверка совершеннолетия: Напишите скрипт, который принимает возраст пользователя и выводит "Вы совершеннолетний", если возраст больше или равен 18, и "Вы несовершеннолетний" — если меньше.
- Проверка температуры: Программа должна принимать значение температуры и выводить "Жарко", если температура больше 30 градусов, и "Прохладно" — если 30 и ниже.
- Скидка на покупку: Напишите код, который проверяет сумму покупки. Если сумма больше 1000, применяйте скидку 10% и выводите новую цену. Если меньше или равна 1000, выводите полную цену без скидки.
- Напишите программу, которая принимает значение текущего часа (0–23) и выводит:
- "Доброе утро" — если время с 5 до 11 часов.
- "Добрый день" — если с 12 до 17.
- "Добрый вечер" — если с 18 до 22.
- "Доброй ночи" — если с 23 до 4.
- Напишите код, который принимает оценку (0-100) и выводит:
- "Отлично" — если оценка 90 и выше.
- "Хорошо" — если от 70 до 89.
- "Удовлетворительно" — если от 50 до 69.
- "Неудовлетворительно" — если ниже 50.
- Создайте программу, которая принимает день недели (1-7) и выводит режим работы:
- "Магазин закрыт" — если это понедельник (1).
- "Магазин работает с 9:00 до 18:00" — если это вторник-пятница (2-5).
- "Магазин работает с 10:00 до 16:00" — если это суббота (6).
- "Магазин работает с 11:00 до 15:00" — если это воскресенье (7).
- Программа принимает возраст и выводит категорию билета:
- "Детский" — если возраст до 12 лет.
- "Подростковый" — если от 13 до 17 лет.
- "Взрослый" — если от 18 до 64 лет.
- "Пенсионный" — если 65 лет и старше.
- Проверка на отсутствие данных: Напишите код, который проверяет переменную на отсутствие значения (пустая строка или
null) и выводит "Пожалуйста, введите данные", если переменная пуста. В противном случае выводит "Данные приняты". (на пустую строку можно проверить вот так$var === "") - Проверка на число не больше определенного значения: Создайте переменную
$number. Если число не больше 50, выводит "Число меньше или равно 50". Если число больше 50, выводит "Число больше 50". Используйте инвертирование условий для реализации этой задачи.
Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегу PHP.
