В первой части статьи про условия в PHP мы разбирались про синтаксис и примеры использования конструкции if…else…. В этой заметке мы продолжим рассматривать управляющие условные конструкции в PHP. Речь здесь пойдет о конструкции ветвлений switch (case). Мы рассмотрим его в сравнении с конcтрукцией if..else, и на примерах разберем случаи, когда выгодней использовать switch вместо if.
Проблема использования IF
Как я уже сказал switch используется для построения условных конструкций. Давайте сначала напишем сложное ветвление с помощью if…else:
<?php
$a = 4;
if ($a == 1) {
echo "A = 1";
}
elseif ($a == 2){
echo "A = 2";
}
elseif ($a == 3){
echo "A = 3";
}
elseif ($a == 4){
echo "A = 4";
}
elseif ($a == 5){
echo "A = 5";
}
?>
A = 4
Громоздкая конструкция не так ли? Лично у меня от нее рябит в глазах…
Использование Switch
В случаях когда значение какого-либо выражения нужно сравнить с фиксированной величиной гораздо выгоднее использовать конструкцию switch.
Синтаксис switch:
switch (выражение) {
case 'значение 1':
группа операторов 1;
break;
........................
case 'значение n':
группа операторов n;
break;
default:
группа операторов по умолчанию;
break;
}
Логика работы как и в предыдущем примере с if. Выражение, которое стоит в switch поочередно (сверху вниз) сравнивается со значениями в case. Если соответствие найдено, то выполняется группа операторов в этой ветке case. Ветка default выполняется в том случае, если выражение не равно ни одному значению из case.
Важно: в этом описание использовано новое для вас ключевик слово break. Это ключевое слово используется для выхода из конструкции наружу (во внешний блок). Если мы уберем break, то после выполнения кода в ветке с соответствующим значением, будут выполняться все ветки, которые расположены ниже. Это типичная ошибка начинающих программистов. Будьте внимательны!
Рассмотрим использование switch на нашем примере:
<?php
$a = 5;
switch ($a) {
case 1:
echo "A = 1";
break;
case 2:
echo "A = 2";
break;
case 3:
echo "A = 3";
break;
case 4:
echo "A = 4";
break;
case 5:
echo "A = 5";
break;
default:
echo "A не равно числам 1,2,3,4 и 5";
break; }
?>
Выполните этот код и посмотрите результат выполнения.
Теперь я по мере возможности буду давать небольшие задания по уроку. Эти задания помогут вам отработать и запомнить места, где возможно совершение ошибок при программировании. Также с их помощью вы более полно овладеете темой. Хотелось бы в комментариях услышать ваше мнение насчет этой идеи.
Самостоятельные задания:
- Измените значение переменной $a так, чтобы попасть в другую ветку и в ветку выполняющуюся по умолчанию (default).
- Удалите break из кода и посмотрите, как поведет себя код.
На сегодня все.