Оператор switch в PHP
Оператор switch
аналогичен серии операторов if
с одинаковым условием. Часто возникает необходимость сравнивать одну и ту же переменную или выражение с массой различных значений, и выполнять разные сценарии в зависимости от того, какое значение принимает эта переменная или выражение. Это именно та ситуация, для которой удобен оператор switch
.
Используйте оператор switch
, чтобы выбрать один из множества блоков кода для выполнения.
Синтаксис
case label1:
// код для выполнения, если n=label1
break;
case label2:
// код для выполнения, если n=label2
break;
...
default:
// код, выполняемый, если n отличается от всех меток labels
}
Вот как работает оператор switch
: берется исходное выражение n (чаще всего переменная), которое вычисляется один раз. Затем значение выражения сравнивается со всеми значениями, стоящими рядом с ключевым словом case
(метка), в порядке их следования. Если есть совпадение, выполняется блок кода, связанный с этим случаем. Используйте break
для предотвращения автоматического перехода кода к следующей метке. Оператор default
используется, если совпадение не найдено.
Пример
Попробуй сам »<?php
$i = "яблоко";
switch ($i) {
case "яблоко":
echo "i это яблоко";
break;
case "груша":
echo "i это груша";
break;
case "слива":
echo "i это слива";
break;
default:
echo "i это не яблоко, не груша и не слива";
}
?>
Результат выполнения кода:
Примечание: Обратите внимание, что за ключевым словом case
каждый раз следует значение (литерал), после которого должно обязательно стоять двоеточие.
break
Инструкции, расположенные после case
, будут исполняться до тех пор, пока не встретится оператор break
.
Интерпретатор PHP, встретив ключевое слово break
, завершает работу оператора switch
и переходит к исполнению инструкции, расположенной после закрывающей фигурной скобки оператора switch
.
Если вы не напишете оператор break
, оператор switch
начнёт выполнение блока кода с case
метки, значение которой соответствует значению условного выражения, и продолжит выполнение инструкций до тех пор, пока не дойдет до конца всего блока. В следующем примере показано, что происходит при отсутствии ключевого слова break
:
Пример
Попробуй сам »<?php
$i = 0;
switch ($i) {
case 0:
echo "i равно 0";
case 1:
echo "i равно 1";
case "2":
echo "i равно 2";
default:
echo "i это не 0, не 1 и не 2";
}
?>
Примечание: В операторе case
может быть использовано любое выражение, которое приводится к простому типу, то есть к строке (string
), числу (integer
), вещественному числу (float
) или логическому значению (bool
). Массивы или объекты не используются.
continue
Оператор continue
применяется в конструкциях switch
и действует подобно оператору break
:
Пример
Попробуй сам »<?php
$a1 = 2;
switch ($a1) {
case 1:
case 2:
case 3:
echo "\$a1 равно 1, 2 или 3"; //выведет $a1 равно 1, 2 или 3
continue;
case 6:
echo "\$a1 равно 6";
continue;
}
?>
Результат выполнения кода:
Из примера выше видно, что список операторов для исполнения в секции case
также может быть пустым, что просто передает управление списку операторов в следующей секции case
.
Примечание: Заметьте, что конструкция swich/case
использует неточное сравнение (==).