Оператор 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 использует неточное сравнение (==).
