Уроки PHP - урок 8-2 - Оператор switch
В прошлом уроке мы с вами познакомились с оператором if. Оператор if позволяет нам осуществлять проверку истинности условия и в зависимости от результата проверки выполнять нужные нам действия.
Давайте теперь представим, что нам нужно выполнить десять проверок и в зависимости от результатов проверки выполнить одно из десяти действий. Конечно мы можем записать это и через if:
<?php
if($x == 1){
// действия
}
if($x == 2){
// действия
}
if($x == 3){
// действия
}
if($x == 4){
// действия
}
if($x == 5){
// действия
}
if($x == 6){
// действия
}
if($x == 7){
// действия
}
if($x == 8){
// действия
}
if($x == 9){
// действия
}
if($x == 10){
// действия
}
?>
Этот способ будет работать, но записывать подобные проверки лучше через оператор SWITCH
PHP switch
Оператор switch позволяет проверить значение выражения при многих условиях. Давайте переделаем указанный выше пример с использованием switch:
<?php
switch ($x){
case 1:
// действия
break;
case 2:
// действия
break;
case 3:
// действия
break;
case 4:
// действия
break;
case 5:
// действия
break;
case 6:
// действия
break;
case 7:
// действия
break;
case 8:
// действия
break;
case 9:
// действия
break;
case 10:
// действия
break;
default:
// действия при условие, что другие условия не подошли
}
?>
Как я и говорил раньше, оба примера будут работать одинаково, только в случае со switch я добавил default, который будет срабатывать, когда значение $x не будет равняться от 1 до 10.
Давайте разберемся из чего состоит конструкция switch. Первым идет сам оператор switch, за ним в скобочках идет проверяемое выражение. В проверяемом выражение может быть переменная как текстового, так и числового формата, то есть это может быть и число и строка, например:
<?php
switch ($x){
case 'Hello':
break;
case 'Bye':
break;
}
?>
После записи проверяемого выражения идут фигурные скобки. В фигурных скобках мы записываем возможные значения выражения и действия.
<?php
switch ($x){
case 'Hello': //возможное значение
print $x; //действия
break; //конец выполнения switch
case 2:
$x++;
break;
}
?>
Проверка значения оформляется в виде case, а само возможное значение пишется в кавычках если это строка или просто так если это число. После возможного значения ставится двоеточие.
Дальше мы записываем нужные действия, которые необходимо выполнить при истинности условия. После окончания case и действий, следует ставить break; что означает окончание работы switch.
После всех case можно использовать default, он сработает если другие case не сработали или вы забыли поставить break; и выполнение switch продолжилось. Отсюда два вывода:
1. Не забывайте ставить break; после окончания действий.
2. Оператор break; можно не ставить после действий default, все равно это последний оператор для проверки условия.
Ниже блок схема к оператору switch:

В качестве пояснения скажу, что здесь мы получаем остаток деления от числа D и сколько дней прошло с начала недели, такой сегодня день.
<?php
// $D число дней начиная с понедельника
$x = $D % 7;
switch ($x){
case 1:
print 'понедельник';
break;
case 2:
print 'вторник';
break;
case 3:
print 'среда';
break;
case 4:
print 'четверг';
break;
case 5:
print 'пятница';
break;
case 6:
print 'суббота';
break;
case 7:
print 'воскресенье';
break;
}
?>