Уроки PHP – описание оператора switch (переключение)
Оператор switch оценивает условие и предоставляет несколько точек принятия решения, в зависимости от значения. Оператор switch аналогичен серии операторов if/else для одного и того же выражения. Если вам нужно сравнить одну и ту же переменную (или выражение) со многими различными значениями и выполнять различные фрагменты кода в зависимости от значения, тогда вам отлично подойдет оператор switch.
В сегодняшней статье мы рассмотрим оператор switch (переключение) и сравним его с операторами if/else и elseif.
Ниже представлен простой пример переключения между различными условиями с помощью операторов if и elseif.
<?php
if ($raining) {
// надеть резиновые сапоги
} elseif ($snowing) {
// надеть теплые ботинки
} elseif ($sunny) {
// надеть сандалии
} else {
// оставаться дома
}
?>
Здесь мы оцениваем только три результата: идет дождь, идет снег или на улице солнечная погода. Также мы учли с помощью оператора else все другие результаты.
Рассмотрим другой вариант проверки, например, если нам нужно знать, какой сегодня день недели (и, соответственно, выполнить какое-то действие):
<?php
$day = date('N'); // получаем текущий день недели (его номер)
if ($day == 1) {
echo "Сегодня понедельник";
} elseif ($day == 2) {
echo "Сегодня вторник";
} elseif ($day == 3) {
echo "Сегодня среда";
} elseif ($day == 4) {
echo "Сегодня четверг";
} elseif ($day == 5) {
echo "Сегодня пятница";
} elseif ($day == 6) {
echo "Сегодня суббота";
} else {
echo "Сегодня воскресенье";
}
?>
Больше информации по работе с датами в PHP вы найдете здесь.
В данном примере не очень много вариантов результатов, но их становится все труднее читать. Представьте себе, что таких результатов несколько десятков?
В таком случае вам нужно попробовать использовать оператор переключения (switch). Он очень похож на оператор if/elseif в том, что он принимает условие и предоставляет несколько точек принятия решения, но его гораздо легче читать и поддерживать.
Давайте для приведенного выше примера будем использовать оператор switch:
<?php
$day = date('N'); // получаем текущий день недели (его номер)
switch ($day) {
case 1:
echo "Сегодня понедельник";
break;
case 2:
echo "Сегодня вторник";
break;
case 3:
echo "Сегодня среда";
break;
case 4:
echo "Сегодня четверг";
break;
case 5:
echo "Сегодня пятница";
break;
case 6:
echo "Сегодня суббота";
break;
default:
echo "Сегодня воскресенье";
}
?>
Здесь концепция такая же, как и в операторе if: он проверяет условие (в данном примере значение дня) и проверяет его по каждому оператору case. Если условие совпадает с оператором case, будет выполнен код в этом блоке. Только учтите, что PHP будет продолжать выполнять операторы до конца блока switch либо до тех пор, пока не встретит оператор break. Если вы не напишете оператор break в конце секции case, PHP будет продолжать исполнять команды следующих секций case.
Также здесь используется оператор default, который вступает в силу, когда не сработал ни один из других операторов case.