Комбинирование условий

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В этом тренажере мы углубимся в условные конструкции PHP. Ты научишься создавать сложные проверки, комбинируя несколько условий с помощью логических операторов. Мы разберем, как работают операторы "И" (&&), "ИЛИ" (||) и "НЕ" (!), а также научимся управлять порядком их выполнения с помощью скобок. Эти навыки необходимы для написания гибкого и умного кода, который может реагировать на множество различных ситуаций. Задания построены от простого к сложному: от базовых комбинаций до вложенных логических выражений. Пройдя их, ты сможешь с уверенностью строить логику любой сложности.

Список тем

Проверка двух условий одновременно

id: 38944_task_1

Давайте напишем проверку для входа в систему. Пользователь должен ввести правильный логин И правильный пароль. Заполните пропуск в коде, чтобы условие выполнялось только тогда, когда оба значения верны.

Заполните пропуски
$login = 'admin';
$password = '12345';

if ($login == 'admin' input1S $password == '12345') {
    echo 'Доступ разрешен';
} else {
    echo 'Доступ запрещен';
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Проверка хотя бы одного условия

id: 38944_task_2

Теперь другая ситуация. Магазин предоставляет скидку, если клиент является VIP-пользователем ИЛИ если сумма его заказа превышает 5000. Определите, какой текст выведет код при заданных значениях переменных.

Выберите правильный вариант ответа
$is_vip = false;
$order_total = 6000;

if ($is_vip == true || $order_total > 5000) {
    echo 'Скидка предоставлена';
} else {
    echo 'Условия для скидки не выполнены';
}
Сообщения
Проверить
Показать подсказку

Ошибка в операторе сравнения

id: 38944_task_3

В этом коде допущена одна из самых частых ошибок новичков. Условие должно проверять, что переменная $status равна 'active', но вместо оператора сравнения используется другой. Найдите и исправьте ошибку.

Найдите ошибку и исправьте
<?php
$age = 25;
$status = 'active';
 
if ($age > 18 && $status = 'active') {
    echo 'Проверка пройдена';
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Приоритет операторов

id: 38944_task_4

Что выведет этот код? Обратите внимание на порядок выполнения логических операторов. Не все они имеют одинаковый приоритет. Внимательно проанализируйте условие и напишите результат выполнения кода.

Что должно получиться?
$is_admin = false;
$is_employee = true;
$project_status = 'pending';

if ($is_admin || $is_employee && $project_status == 'done') {
    echo 'Доступ к отчету';
} else {
    echo 'Доступ запрещен';
}
Сообщения
Проверить
Показать подсказку

Сборка условия с отрицанием

id: 38944_task_5

Соберите условие, используя элементы из банка. Система должна пропускать пользователей, которые НЕ заблокированы (!= 'banned') И имеют возраст 18 лет или больше. Перетащите нужные операторы в пропуски.

Нужно правильно расставить в пропуски предложенные варианты
$user_status = 'active';
$user_age = 20;

if ($user_status input1S 'banned' input2S $user_age >= 18) {
    echo 'Доступ разрешен';
}
!=
&&
==
||
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Изменение приоритета с помощью скобок

id: 38944_task_6

Доступ к секретному разделу есть у администраторов, а также у редакторов, но только если они авторизованы. Добавьте скобки, чтобы правильно сгруппировать условия. Логика: доступ есть, если (пользователь — редактор И он авторизован) ИЛИ он администратор.

Заполните пропуски
$role = 'editor';
$is_logged_in = true;

if (input1S $role == 'editor' && $is_logged_in input2S || $role == 'admin') {
    echo 'Полный доступ';
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Операторы и их названия

id: 38944_task_7

Давайте закрепим знания. Сопоставьте каждому логическому оператору его правильное название и краткое описание принципа работы.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Логическое "И" (оба истинны)
Логическое "ИЛИ" (хотя бы один истинен)
Логическое "НЕ" (инверсия)
!
&&
||
Сообщения
Проверить
Показать подсказку

Сборка сложного условия

id: 38944_task_8

Соберите PHP-скрипт из фрагментов. Скрипт должен выводить "Можно ехать", если в баке больше 10 литров бензина И (водитель трезв ИЛИ включен автопилот). Переместите строки из правого блока в левый в правильном порядке. Некоторые строки лишние.

Перетяните в правильном порядке строки из одного блока в другой
echo "Можно ехать";
$is_sober = true;
if ($fuel > 10 && ($is_sober || $autopilot_on)) {
<?php
$fuel = 15; $autopilot_on = false;
}
if ($fuel > 10 || ($is_sober && $autopilot_on)) {
echo "Бензина мало";
$is_sober = false;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Условие с отрицанием и скобками

id: 38944_task_9

Это финальная проверка. Внимательно проанализируйте это сложное условие. Что выведет код? Учитывайте и приоритет операторов, и скобки, и оператор отрицания.

Выберите правильный вариант ответа
$role = 'user';
$permission_level = 3;

if (!($permission_level < 5) && ($role == 'user' || $role == 'guest')) {
    echo 'ALPHA';
} else {
    echo 'BETA';
}
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру