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

Игра Лила — это самая древняя из известных трансформационных игр для самопознания

Если представить жизнь в форме Игры, тогда каждому из нас в ней отведена своя роль.…

5 дней ago

Как изменить активную тему WordPress через базу данных

Тема (шаблон) – это своеобразный скелет сайта на WordPress. И, к сожалению, иногда этот «скелет»…

6 дней ago

5 практических советов по разработке форм под мобильные устройства

Контактная форма (или любая другая) на сайте – это очень важный компонент. На нее возложен…

7 дней ago

Лина Костенко

Ужас не в том, что что-нибудь изменится. Ужас в том, что все может остаться тем…

2 недели ago

Трансформационная игра родом из древней Индии — Лила

Что такое Лила — это древняя игра, выступающая в качестве инструмента для личностной трансформации, практик…

2 недели ago