Инструкция switch в PHP
Когда одно значение может привести к нескольким разным действиям, инструкция switch аккуратно их упорядочивает. PHP использует её, чтобы выбрать из многих блоков кода один и выполнить его.
Синтаксис switch
Инструкция switch устроена так:
<?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»:
Вывод: PHP-скрипт
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Ваш любимый цвет — red!";
break;
case "blue":
echo "Ваш любимый цвет — blue!";
break;
case "green":
echo "Ваш любимый цвет — green!";
break;
default:
echo "Ваш любимый цвет — не red, не blue и не green!";
}
?>
Ключевое слово default
Ключевое слово default отмечает код, который используется, когда ни один из вариантов не совпал. Считайте его аналогом else в конце инструкции if...elseif...else.
switch с днём недели
Этот switch превращает номер дня из date("w") в название сегодняшнего дня:
Вывод: PHP-скрипт
<?php
$d = date("w");
switch ($d) {
case 0:
echo "Воскресенье";
break;
case 1:
echo "Понедельник";
break;
case 2:
echo "Вторник";
break;
case 3:
echo "Среда";
break;
case 4:
echo "Четверг";
break;
case 5:
echo "Пятница";
break;
case 6:
echo "Суббота";
break;
}
?>
Общие блоки кода
Несколько вариантов могут использовать один общий блок кода. Расположите их прямо друг над другом и не ставьте между ними break. Этот приём иногда называют проваливанием (fall-through).
Проваливание в switch
Варианты "red" и "blue" расположены друг над другом, поэтому любое из этих значений приводит к одному и тому же сообщению:
Вывод: PHP-скрипт
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
case "blue":
echo "Ваш любимый цвет — red или blue!";
break;
case "green":
echo "Ваш любимый цвет — green!";
break;
default:
echo "Ваш любимый цвет — не red, не blue и не green!";
}
?>