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