Уроки 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
.