Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков:
switch(expression) // переключающее выражение
{
case value1: // константное выражение 1
statements; // блок операторов
break;
case value2: // константное выражение 2
statements;
break;
default:
statements;
}
Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали:
<form action = "http://localhost/PHP/chapt2/switch.php" method="get">
number: <input type="text" name="number"/><br>
<input type="submit"/>
</form>
switch($number)
{
case 1:
echo ("one ");
case 2: case 3:
echo ("free");
case 4: case 5:
echo ("five");
case 6: case 7:
echo ("seven");
case 8: case 9:
echo ("nine");
break;
default:
echo ("This isn't number or number is > 9 or < 1");
}
?>
Результат выполнения скрипта:
Форма запроса
Результат выполнения скрипта
Так же, как и в случае условного оператора для переключателей допустимы любые степени вложенности, однако злоупотреблять этим без особой на то необходимости также не следует.
Кроме уже сказанного о переключателе, приведенная программа демонстрирует действие оператора break, с помощью которого происходит выход из переключателя. Если поместить операторы break после вывода каждой из цифр, то в окне браузера мы увидим название только одной нечетной цифры.
Как видим, после конструкции switch приведен составной оператор, однако это совершенно не обязательно – после switch может находиться любой оператор, помеченный служебным словом case.
Напомним, что составной оператор, это заключенная в фигурные скобки последовательность операторов.
Заметим также, что в PHP в качестве меток case могут использоваться не только литералы, но и сами метки могут быть переменными. В качестве меток case в PHP не могут выступать только массивы и объекты.