Тема урока — ветка default в операторе switch в PHP. Разберём, когда и зачем она срабатывает, где может располагаться, как влияет наличие break и как работает «проваливание» (fall-through). Начнём с простого синтаксиса и постепенно перейдём к кейсам с нестрогим сравнением, размещением default в начале, а также к задачам на сборку и анализ кода. В заданиях встретятся разные форматы: от заполнения пропусков и исправления ошибок до прогнозирования результата и сопоставления сценариев. По пути вы увидите, что default — необязателен, но полезен как «запасной вариант», что он может стоять в любом месте внутри switch и что отсутствие break после default приводит к выполнению следующих веток. Обращайте внимание на комментарии в коде: они задают контекст и цель. Так вы поймёте, почему выбор определённой строки или порядок важны.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Заполни ветку default и завершай её break
В блоке switch предусмотрены только один известный вариант и «запасной» путь. Добавьте метку ветки по умолчанию и корректно завершите её, чтобы при неизвестном статусе выводилось «UNKNOWN». Обратите внимание на точное двоеточие после ключевого слова и завершение инструкции.
<?php
$status = 'archived'; // значение не совпадает ни с одним case
switch ($status) {
case 'active':
echo 'ACTIVE';
break;
input1S
echo 'UNKNOWN';
input2S
}
?>Когда сработает default: код ответа HTTP
Посмотрите на switch по числовому коду ответа. Выберите, что напечатает программа. Обратите внимание на перечисленные варианты case и наличие ветки default.
<?php
$code = 404;
switch ($code) {
case 200:
echo 'OK';
break;
case 301:
case 302:
echo 'REDIRECT';
break;
default:
echo 'ERROR';
}
?>Исправьте синтаксис: default и пропущенную ;
В коде есть две синтаксические ошибки: пропущена ; после break и неверно оформлена метка ветки по умолчанию. Исправьте строки так, чтобы при роли guest выводилось "guest".
<?php$role = 'guest';switch ($role) { case 'admin': echo 'admin'; break default; echo 'guest'; break;}Сопоставьте сценарий и ветку выполнения
Определите, какая ветка сработает в каждом из случаев. Учитывайте, что в PHP в switch используется нестрогое сравнение (==), поэтому "0" и 0 совпадают. Расположите правую колонку в соответствии с описанием слева.
$x = 2; switch ($x) { case 1: echo 'one'; break; default: echo 'def'; }$x = "0"; switch ($x) { case 0: echo 'zero'; break; default: echo 'def'; }$x = '1'; switch ($x) { case '1': echo 'one'; break; default: echo 'def'; }$x = 1; switch ($x) { case 1: echo 'one'; break; case 2: echo 'two'; }Добавьте ветку default как «запасной» путь
Соберите фрагмент switch так, чтобы для неизвестной команды выводилось 'unknown'. Используйте элементы из банка: корректную метку ветки по умолчанию, строковый литерал и завершение ветки. В банке есть лишние элементы.
<?php
$cmd = 'pause'; // неизвестная команда
switch ($cmd) {
case 'start':
echo 'go';
break;
case 'stop':
echo 'bye';
break;
input1S
echo input2S;
input3S
}
?>Соберите switch, где default стоит первым
Нужно собрать код, в котором default расположен первым, а команда 'noop' приводит к выводу 'UNKNOWN'. Используйте только корректные строки и расположите их в логичном порядке. В списке есть лишние строки-ловушки.
<?php$cmd = 'noop';switch ($cmd) { default: echo 'UNKNOWN'; break; case 'run': echo 'RUN'; break;}default;case default:echo UNKNOWN;continue;Проваливание после default без break
В этом примере default расположен между ветками и после него нет break. Учтите поведение switch: после входа в ветку выполнение продолжается до первого break, даже если последующие case-метки не соответствуют условию. Выберите, что будет выведено.
<?php
$val = 10;
switch (true) {
case $val < 0:
echo 'NEG';
break;
default:
echo 'OTHER';
case $val < 5:
echo 'LT5';
break;
}
?>Расставьте строки: корректный switch с default
Восстановите правильный порядок строк для рабочего примера. Значение переменной 'blue' должно привести к выводу 'B', но ветка default тоже предусмотрена. Учитывайте, что default может располагаться в любом месте, но здесь он в конце.
<?php$color = 'blue';switch ($color) {case 'red': echo 'R'; break;case 'blue': echo 'B'; break;default: echo 'OTHER'; break;}?>Разнесите утверждения о default по категориям
Определите, какие утверждения о ветке default верны, какие неверны, а какие не относятся к теме. Перетащите элементы в соответствующие категории.
Что выведет код с default?
Определите, что будет выведено при значении, которое не совпадает ни с одним из перечисленных case. Обратите внимание: значение приводится к верхнему регистру функцией, но строка заранее фиксирована.
<?php
$action = 'export';
switch ($action) {
case 'list':
echo 'LIST';
break;
case 'view':
echo 'VIEW';
break;
default:
echo strtoupper('unknown');
}
?>