Тернарный оператор

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

Тренажер PHP

Тернарный оператор — это ваш компактный помощник, заменяющий громоздкие конструкции `if-else`. Он позволяет записать простое условие в одну строку, делая код чище и лаконичнее. Этот тренажер поможет вам освоить его синтаксис и логику работы. Вы начнете с заполнения пропусков в базовой структуре, научитесь предсказывать результат выполнения кода, исправлять типичные ошибки и даже собирать тернарные выражения с нуля. По мере прохождения заданий сложность будет расти, затрагивая вложенные конструкции и практические примеры. Цель — довести использование тернарного оператора до автоматизма.

Список тем

1. Основы синтаксиса: знаки оператора

id: 38929_task_1

Тернарный оператор состоит из трёх частей: условие, значение при истинности и значение при ложности. Эти части разделяются специальными символами. Заполните пропуски, чтобы завершить выражение, которое присваивает переменной `$message` разный текст в зависимости от состояния переменной `$isLoggedIn`.

Заполните пропуски
$isLoggedIn = true;
$message = ($isLoggedIn) input1S 'Добро пожаловать!' input2S 'Пожалуйста, войдите.';
echo $message;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Предсказание результата: проверка возраста

id: 38929_task_2

Проанализируйте код. Переменная `$age` содержит возраст пользователя. В зависимости от её значения, переменной `$status` присваивается либо 'Совершеннолетний', либо 'Несовершеннолетний'. Что в итоге будет выведено на экран?

Выберите правильный вариант ответа
$age = 25;
$status = ($age >= 18) ? 'Совершеннолетний' : 'Несовершеннолетний';
echo $status;
Сообщения
Проверить
Показать подсказку

3. Поиск ошибки: неверный разделитель

id: 38929_task_3

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

Найдите ошибку и исправьте
<?php
$price = 120;
$delivery_cost = ($price > 100) ? 0 ; 10;
echo "Стоимость доставки: $delivery_cost";
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Что выведет код?

id: 38929_task_4

В этом примере цвет текста для сообщения определяется в зависимости от типа сообщения (`'success'` или `'error'`). Внимательно проследите за логикой и определите, какое значение будет выведено в результате работы кода. Введите ответ в поле.

Что должно получиться?
$message_type = 'error';
$color = ($message_type == 'success') ? 'green' : 'red';
echo $color;
Сообщения
Проверить
Показать подсказку

5. Сборка из if-else

id: 38929_task_5

Конструкция `if-else` часто может быть заменена на более короткий тернарный оператор. Перетащите фрагменты кода из правого контейнера в левый, чтобы собрать эквивалентное тернарное выражение, которое определяет, может ли пользователь получить скидку.

Перетяните в правильном порядке строки из одного блока в другой
// Задание: заменить этот код:
// if ($purchase_amount > 1000) {
//   $has_discount = true;
// } else {
//   $has_discount = false;
// }
$has_discount = ($purchase_amount > 1000)
?
true
:
false;
if ($purchase_amount) {
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Использование банка для составления выражения

id: 38929_task_6

Соберите рабочее выражение, используя элементы из "банка". Цель — присвоить переменной `$icon` имя файла иконки в зависимости от типа файла. Для `'image'` нужна иконка `'photo.svg'`, для всего остального — `'file.svg'`. Некоторые элементы в банке лишние.

Нужно правильно расставить в пропуски предложенные варианты
$file_type = 'image';
input1S input2S (input3S == input4S) input5S input6S input7S input8S;
$icon
=
$file_type
'image'
?
'photo.svg'
:
'file.svg'
'video'
>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Логическая ошибка в условии

id: 38929_task_7

Код должен предоставлять скидку 10%, если пользователь является премиум-клиентом (`$is_premium` равно `true`). Однако из-за ошибки в условии скидка применяется всегда. Найдите и исправьте логическую ошибку в строке с тернарным оператором.

Найдите ошибку и исправьте
<?php
$is_premium = false;
$discount = ($is_premium = true) ? 10 : 0;
echo "Ваша скидка: $discount%";
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Вложенный тернарный оператор

id: 38929_task_8

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

Выберите правильный вариант ответа
$score = 75;
$grade = ($score > 85) ? 'Отлично' : (($score > 60) ? 'Хорошо' : 'Удовлетворительно');
echo $grade;
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 38929_compiler

Пример показывает, как тернарный оператор ? : помогает быстро выбрать одно из двух значений в зависимости от условия. Поиграйте с переменными $score, $age и $isMember: меняйте числа и true/false и наблюдайте, как меняется текст результата. Сравните тернарный оператор с обычным if/else и попробуйте сделать более сложные условия (например, несколько проверок через && и ||). В коде также есть типичная ошибка с приоритетом операторов: уберите/добавьте скобки и посмотрите, почему результат может стать неожиданным.

🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру