Menu
Coddy logo textTech

Switch Statement

Часть раздела Основы путешествия по PHP на Coddy — урок 32 из 71.

Когда вам нужно сравнить одну переменную с множеством конкретных значений, switch statement предлагает более чистую альтернативу длинным цепочкам if-elseif.

Оператор switch проверяет переменную один раз и затем сопоставляет её с различными значениями case:

<?php
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "Start of the week";
        break;
    case "Friday":
        echo "Almost weekend";
        break;
    case "Saturday":
    case "Sunday":
        echo "Weekend!";
        break;
    default:
        echo "Regular day";
}
?>

PHP сравнивает $day с каждым case. Когда находит совпадение, выполняет код этого блока.

Оператор break крайне важен — он указывает PHP выйти из switch после выполнения совпавшего case. Без него PHP продолжит выполнять весь код ниже, даже из других cases.

Обратите внимание, как суббота и воскресенье используют один и тот же код, объединяя case вместе. Случай default действует как else — он выполняется, когда ни один другой case не совпадает.

<?php
$grade = "B";

switch ($grade) {
    case "A":
        echo "Excellent!";
        break;
    case "B":
        echo "Good job!";
        break;
    default:
        echo "Keep trying!";
}
?>

Используйте switch при сравнении одной переменной с несколькими точными значениями. Для сложных условий или диапазонов придерживайтесь инструкций if-elseif.

challenge icon

Задание

Легко

Прочитайте строку command из ввода, представляющую цвет светофора.

Используйте оператор switch для определения соответствующего действия на основе цвета:

  • Если команда равна red, выведите Stop
  • Если команда равна yellow, выведите Slow down
  • Если команда равна green, выведите Go
  • Если команда равна flashing red или flashing yellow, выведите Proceed with caution
  • Для любого другого значения выведите Invalid signal

Пример:

Если ввод — green, вывод должен быть:

Go

Если ввод — flashing red, вывод должен быть:

Proceed with caution

Если ввод — blue, вывод должен быть:

Invalid signal

Шпаргалка

Оператор switch предоставляет более чистый способ сравнения одной переменной с несколькими конкретными значениями:

<?php
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "Start of the week";
        break;
    case "Friday":
        echo "Almost weekend";
        break;
    default:
        echo "Regular day";
}
?>

Оператор break завершает switch после выполнения подходящего case. Без него PHP продолжает выполнять код из последующих cases.

Несколько cases могут использовать один и тот же код, если их расположить подряд:

<?php
switch ($day) {
    case "Saturday":
    case "Sunday":
        echo "Weekend!";
        break;
}
?>

Case default выполняется, когда ни один другой case не подходит, аналогично оператору else.

Используйте операторы switch для сравнения одной переменной с несколькими точными значениями. Для сложных условий или диапазонов используйте операторы if-elseif вместо этого.

Попробуйте сами

<?php
// Читаем ввод
$command = trim(fgets(STDIN));

// TODO: Напишите свой код ниже, используя оператор switch
// Определяем соответствующее действие на основе цвета светофора


?>
quiz iconПроверьте себя

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

Все уроки раздела Основы