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

Марк Туллий Цицерон

Величайшее из достоинств оратора — не только сказать то, что нужно, но и не сказать…

5 дней ago

Локальная поисковая оптимизация (local SEO) в теоретических деталях

Ваша стратегия SEO продвижения должна быть сильной и охватывать практически все грани этой комплексной работы,…

7 дней ago

Омар Хайям

Я знаю мир: В нем вор сидит на воре, Глупец у мудреца всегда выигрывает в…

1 неделя ago

Уроки JavaScript — Массивы: основы использования и основные функции

Массивы не только в JavaScript являются фундаментальной структурой данных, но и практически во всех языках…

2 недели ago

Выбираем системный блок: полезные рекомендации

Системный блок — это центральная часть персонального компьютера, которая включает основные аппаратные компоненты: процессор, видеокарту,…

2 недели ago

Как стать профессиональным веб-разработчиком

Думали ли вы когда-нибудь о карьере веб-разработчика/программиста? Чтобы самостоятельно создавать свои веб-сайты, приложения, программы? Если…

2 недели ago