Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Уроки PHP - урок 8-2 - Оператор switch

08/12/2019, by Ivan

В прошлом уроке мы с вами познакомились с оператором 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:

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;
}
?>