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

 

Recent Posts

Как выбрать мастера для перетяжки мебели?

Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…

2 дня ago

Что лучше выбрать для хостинга: сервер VPS Windows или VPS Linux?

Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…

1 неделя ago

Лоуренс Питер

Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер  

2 недели ago

Что такое Черное СЕО (Black Hat SEO) — вся нужная информация

Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…

2 недели ago

Права категории C: кому они нужны и как их получить?

Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…

3 недели ago

Уилл Смит

Хорошие люди принесут вам счастье, плохие люди наградят вас опытом, худшие — дадут вам урок,…

3 недели ago