Menu
Coddy logo textTech

Оператор switch

Часть раздела Основы путешествия по 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 statement имеет решающее значение. Он сообщает PHP выйти из switch после выполнения совпавшего case. Без него PHP продолжил бы выполнение всего кода below, даже из других case.

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

<?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

Задание

Легко

Read строку command из input, представляющую цвет traffic light.

Используйте switch statement, чтобы определить appropriate действие based на цвете:

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

Пример:

Если в input передано значение green, результатом должен быть:

Go

Если в input передано значение flashing red, результатом должен быть:

Proceed with caution

Если в input передано значение blue, результатом должен быть:

Invalid signal

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

<?php
// Прочитать ввод
$command = trim(fgets(STDIN));

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


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

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор PHP