Уроки 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
.
Последние посты
Томас Эдисон
Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее
Самые красивые и впечатляющие мосты со всего мира (ТОП-10)
Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее
Соломон
Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее
Чак Паланик
Кто может — тот делает. Кто не может — тот критикует Чак Паланик Читать далее
Ричард Бах
Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее
Стивен Кинг
Жизнь – это непрерывный опыт, и даже самые плохие моменты занимают свое место в пазле… Читать далее