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