Вы здесь: Главная > Основы разработки сайта > Основы PHP > 15 урок - Конструкция switch-case

Основы PHP

15 урок - Конструкция switch-case

Часто вместо нескольких расположенных подряд инструкций if-else целесообразно воспользоваться специальной конструкцией выбора switch-case. Раcсмотрим пример на elseif.

<?php
$d = 2;
if ($d == 1)
     print(" 1 ");
elseif ($d == 2)
     print(" 2 ");
elseif ($d == 3)
     print(" 3 ");
elseif ($d == 4)
     print(" 4 ");
?>

Данный пример выведет значение при совпадение условия, но перебор всех сравнений будет идти пока не закончиться конструкция.  Логичнее было бы закончить выполнение кода, сразу как условие выполниться.  Конструкция switch-case как раз такой логикой и обладает. 

Рассмотрим синтаксис конструкции switch-case:

<?php
switch (Переменная/Выражение){
     case Значение 1:
          Операторы 1;
          [break;]
     case Значение 2:
          Операторы 2;
          [break;]
     [default: Оператор]
}
?>

Наш пример будет в конструкции switch-case выглядеть следующем образом:

<?php
$d = 2;
switch ($d) {
     case 1:
          print(" 1 ");
          break;
     case 2:
          print(" 2 ");
          break;
     case 3:
          print(" 3 ");
          break;
     case 4:
          print(" 4 ");
          break;
}
?>

break; - означает выйти из конструкции. То есть если переменная совпала, то сразу закончить выполнение конструкции.  

Очень интересно ведет себя конструкция, если убрать break;

<?php
$d = 2;
switch ($d) {
     case 1:
          print(" 1 ");
     case 2:
          print(" 2 ");
     case 3:
          print(" 3 ");
     case 4:
          print(" 4 ");
}
?>

Конструкция начинает работать по принципу: 

Увидел совпадение в case, и выполняю всё что есть, не смотря наследующие case!!! В итоге выдаст на экран -  2 3 4

Если Вы посмотрите еще раз вверх на пример синтаксиса конструкции. То увидите - default: Оператор. Данные строчки выполняются при условии, что не одно выражение не совпало с case.

Пример:

<?php
$d = 100;
switch ($d) {
     case 1:
          print(" 1 ");
          break;
     case 2:
          print(" 2 ");
          break;
     case 3:
          print(" 3 ");
          break;
     case 4:
          print(" 4 ");
          break;
     default: print(" Переменная не совпала с case. Вывелось значение по умолчанию. ");
}
?>

Так же как у конструкции “if и elseif” есть альтернативный синтаксис, который часто используется. Вот пример его:

<?php
$x=3;
switch ($x):
case 0:
    echo "x=0";
    break;
case 1:
    echo "x=1";
    break;
case 2:
    echo "x=2";
    break;
default:
    echo "x не равен 0, 1 или 2";
endswitch;
?>

В нем нет  ”{ }” для определение начала, а используется  “ :”

А для конца - endswitch;