Break в switch

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

Тренажер PHP

Конструкция `switch` — это мощный инструмент для управления потоком выполнения программы, когда нужно проверить одну переменную на соответствие множеству значений. Однако её поведение сильно зависит от одного ключевого слова: `break`.

В этом тренажере мы разберемся, почему `break` так важен. Вы увидите, как он останавливает выполнение кода внутри `switch` и что происходит, если его пропустить. Это явление называется проваливанием (fall-through). Вы научитесь использовать `break` для изоляции каждого случая и поймете, когда его отсутствие может быть полезным, а когда — приводить к ошибкам. Задания построены от простого к сложному: от вставки `break` в нужных местах до предсказания результата кода с "проваливанием".

Список тем

Остановка выполнения case

id: 38940_task_replace_1

В конструкции `switch` после выполнения кода для одного из `case` необходимо явно указать, что дальнейшая проверка не требуется. Дополните код, чтобы при значении переменной `$day` равном 1, выводилось только "Понедельник", а не все дни подряд.

Заполните пропуски
<?php
$day = 1;
switch ($day) {
    case 1:
        echo "Понедельник";
        input1S
    case 2:
        echo "Вторник";
        break;
    default:
        echo "Другой день";
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Стандартное поведение switch

id: 38940_task_predict_2

Перед вами классический пример использования `switch` с `break` в каждом `case`. Определите, что будет выведено на экран в результате выполнения этого кода.

Выберите правильный вариант ответа
<?php
$role = 'editor';
switch ($role) {
    case 'admin':
        echo 'Полный доступ';
        break;
    case 'editor':
        echo 'Доступ к редактированию';
        break;
    case 'user':
        echo 'Ограниченный доступ';
        break;
}
?>
Сообщения
Проверить
Показать подсказку

Эффект "проваливания"

id: 38940_task_predict_3

Теперь посмотрим, что произойдет, если забыть `break`. Внимательно проанализируйте код и предскажите, какой будет итоговый вывод.

Выберите правильный вариант ответа
<?php
$status = 'pending';
switch ($status) {
    case 'pending':
        echo 'Статус: Ожидание. ';
    case 'processing':
        echo 'Статус: В обработке.';
        break;
    case 'completed':
        echo 'Статус: Завершено.';
        break;
}
?>
Сообщения
Проверить
Показать подсказку

Исправьте логическую ошибку

id: 38940_task_error_4

Этот код должен выводить "Средний" для размера 'M'. Однако из-за ошибки он выводит "СреднийКрупный". Найдите строку, которая вызывает проблему, и исправьте её, добавив недостающий оператор.

Найдите ошибку и исправьте
<?php
$size = 'M';
switch ($size) {
    case 'S':
        echo 'Маленький';
        break;
    case 'M':
        echo 'Средний';
    case 'L':
        echo 'Крупный';
        break;
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите конструкцию switch

id: 38940_task_bfp_5

Из предложенных фрагментов кода соберите правильную конструкцию `switch`, которая для переменной `$level` со значением 9 выводит сообщение "Уровень 9", а для всех остальных случаев — "Другой уровень". Лишние фрагменты использовать не нужно.

Перетяните в правильном порядке строки из одного блока в другой
switch ($level) {
case 9:
break;
}
echo "Другой уровень";
echo "Уровень 9";
case 10:
default:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Результат множественного "проваливания"

id: 38940_task_give_result_6

В этом примере `break` отсутствует в нескольких местах. Проследите за выполнением кода шаг за шагом и впишите итоговую строку, которая будет сохранена в переменной `$result`. Обратите внимание на пробелы и запятые.

Что должно получиться?
<?php
$step = 2;
$result = '';

switch ($step) {
    case 1:
        $result .= 'Шаг 1, ';
    case 2:
        $result .= 'Шаг 2, ';
    case 3:
        $result .= 'Шаг 3, ';
    case 4:
        $result .= 'Шаг 4';
        break;
    case 5:
        $result .= 'Шаг 5';
        break;
}

echo $result;
?>
Сообщения
Проверить
Показать подсказку

Намеренное группирование 'case'

id: 38940_task_predict_7

Иногда "проваливание" используется намеренно, чтобы сгруппировать несколько `case` для выполнения одного и того же кода. Проанализируйте пример и определите, что он выведет для дня недели "Суббота".

Выберите правильный вариант ответа
<?php
$day = 'Суббота';
$typeOfDay = '';
switch ($day) {
    case 'Понедельник':
    case 'Вторник':
    case 'Среда':
    case 'Четверг':
    case 'Пятница':
        $typeOfDay = 'Рабочий день';
        break;
    case 'Суббота':
    case 'Воскресенье':
        $typeOfDay = 'Выходной';
        break;
}
echo $typeOfDay;
?>
Сообщения
Проверить
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру