Перейти к основному содержимому

Инструкция switch в PHP

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

Синтаксис switch

Инструкция switch устроена так:

index.php
<?php
switch (expression) {
  case label1:
    //code block
    break;
  case label2:
    //code block
    break;
  case label3:
    //code block
    break;
  default:
    //code block
}
?>

Как это работает

PHP вычисляет выражение один раз, а затем по очереди сравнивает результат со значением каждого case. Найдя совпадение, он выполняет код этого варианта. Ставьте break в конце каждого блока, потому что без него PHP продолжил бы выполнение в следующем варианте. Если совпадений нет, вместо этого выполняется блок default.

Инструкция switch с цветами

В зависимости от того, что содержит $favcolor, выводится разное сообщение. Здесь задано значение «red»:

Prompt
Напишите PHP-скрипт, который присваивает переменной $favcolor значение "red". Используйте инструкцию switch, чтобы проверить значение $favcolor. Если "red", выведите «Ваш любимый цвет — red!». Если "blue", выведите «Ваш любимый цвет — blue!». Если "green", выведите «Ваш любимый цвет — green!». Добавьте case default, который выводит «Ваш любимый цвет — не red, не blue и не green!».
Вывод: PHP-скрипт

Ключевое слово default

Ключевое слово default отмечает код, который используется, когда ни один из вариантов не совпал. Считайте его аналогом else в конце инструкции if...elseif...else.

switch с днём недели

Этот switch превращает номер дня из date("w") в название сегодняшнего дня:

Prompt
Напишите PHP-скрипт, который присваивает переменной $d текущий номер дня недели с помощью date("w"). Используйте инструкцию switch с case для каждого дня (0=воскресенье ... 6=суббота), выводя название дня. Блок default не нужен, поскольку охвачены все семь дней.
Вывод: PHP-скрипт

Общие блоки кода

Несколько вариантов могут использовать один общий блок кода. Расположите их прямо друг над другом и не ставьте между ними break. Этот приём иногда называют проваливанием (fall-through).

Проваливание в switch

Варианты "red" и "blue" расположены друг над другом, поэтому любое из этих значений приводит к одному и тому же сообщению:

Prompt
Напишите PHP-скрипт, который присваивает переменной $favcolor значение "red". Создайте инструкцию switch, в которой у case "red" НЕТ инструкции break, поэтому выполнение «проваливается» в case "blue". Case "blue" выводит «Ваш любимый цвет — red или blue!» и завершается инструкцией break.
Вывод: PHP-скрипт