Конструкция switch-case

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

Тренажер PHP

Когда нужно сравнить одну переменную с множеством разных значений, цепочка `if-elseif-else` может стать громоздкой. Здесь на помощь приходит конструкция `switch-case`. Она работает как многопозиционный переключатель: мы подаем на вход переменную (`switch`), а затем проверяем ее значение в каждом отдельном случае (`case`). Это делает код более читаемым и структурированным. Важными элементами `switch` являются `break`, который прерывает выполнение после найденного совпадения, и `default` — блок, который выполняется, если ни одно из значений `case` не подошло. В этом тренажере мы отработаем синтаксис `switch-case`, научимся находить и исправлять ошибки (особенно связанные с отсутствием `break`), предсказывать результат выполнения и собирать целые конструкции.

Список тем

Базовая структура switch-case

id: 38939_task_switch_1

Заполните пропуски, чтобы создать простую конструкцию `switch-case`. Код должен определять название дня недели по его номеру. Вам нужно вставить ключевые слова `switch`, `case` и `break`.

Заполните пропуски
$day_number = 1;
$day_name = "";

input1S ($day_number) {
    input2S 1:
        $day_name = "Понедельник";
        input3S;
    case 2:
        $day_name = "Вторник";
        break;
}

echo $day_name;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Найдите пропущенный `break`

id: 38939_task_switch_2

В этом коде есть логическая ошибка: в одном из блоков `case` пропущен оператор `break`. Из-за этого после нахождения совпадения выполнение "провалится" в следующий `case`. Найдите, где не хватает `break`, и добавьте его.

Найдите ошибку и исправьте
$command = "start";
 
switch ($command) {
    case 'start':
        echo "Процесс запущен";
    case 'stop':
        echo "Процесс остановлен";
        break;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет код с блоком `default`?

id: 38939_task_switch_3

Проанализируйте код. Переменная `$http_status` имеет значение 404. Конструкция `switch` пытается найти совпадение. Если ни один из `case` не подходит, выполняется блок `default`. Выберите правильный вариант вывода.

Выберите правильный вариант ответа
$http_status = 404;
$message = "";

switch ($http_status) {
    case 200:
        $message = "OK";
        break;
    case 301:
        $message = "Moved Permanently";
        break;
    default:
        $message = "Not Found";
}

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

Соберите обработчик команд

id: 38939_task_switch_4

Соберите из фрагментов кода полноценную конструкцию `switch-case`, которая обрабатывает команды `'view'`, `'edit'` и `'delete'`. Для любой другой команды должно выводиться сообщение "Неизвестная команда". Некоторые фрагменты лишние.

Перетяните в правильном порядке строки из одного блока в другой
$command = 'edit';
switch ($command) {
    case 'view':
        echo 'Просмотр...';
        break;
    case 'edit':
        echo 'Редактирование...';
        break;
    case 'delete':
        echo 'Удаление...';
        break;
    default:
        echo 'Неизвестная команда';
}
if ($command == 'edit')
break
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

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

id: 38939_task_switch_5

В этом коде намеренно пропущены операторы `break`. Это означает, что после нахождения первого совпадения, выполнение продолжится и в следующих блоках `case` до тех пор, пока не встретится `break` или конец `switch`. Что выведет этот код? Ответ запишите в одну строку.

Что должно получиться?
$level = 2;

switch ($level) {
    case 1:
        echo "Уровень 1. ";
    case 2:
        echo "Уровень 2. ";
    case 3:
        echo "Уровень 3. ";
        break;
    default:
        echo "Начальный уровень. ";
}
Сообщения
Проверить
Показать подсказку

Группировка `case` из банка

id: 38939_task_switch_6

Конструкция `switch` позволяет группировать несколько `case` для выполнения одного и того же кода. Заполните пропуски, используя токены из банка, чтобы код правильно определял выходные дни.

Нужно правильно расставить в пропуски предложенные варианты
$day = "Sunday";

switch ($day) {
    case "Saturday":
    input1S "Sunday":
        echo "Это выходной!";
        break;
    input2S:
        echo "Это будний день.";
}
case
default
break
if
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте синтаксис `case`

id: 38939_task_switch_7

Программист допустил ошибку в синтаксисе `case`, поставив точку с запятой вместо двоеточия. Это приводит к синтаксической ошибке. Найдите и исправьте все строки с этой ошибкой.

Найдите ошибку и исправьте
$grade_letter = 'B';
 
switch ($grade_letter) {
    case 'A';
        echo "Отлично";
        break;
    case 'B';
        echo "Хорошо";
        break;
    default:
        echo "Удовлетворительно";
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру