Инструкция switch-case (конструкция выбора)

Нами осталась незамеченной очень важная конструкция в PHP5 — switch-case. Данная конструкция предназначена для выбора действий, в зависимости от значения указанного выражения. Конструкция switch-case чем-то напоминает оператор if-else, который, по сути, является ее аналогом. Конструкцию выбора нужно использовать, если предполагаемых вариантов много, скажем, больше 5, и для каждого варианта нужно выполнить специфические действия. В этом случае использовать оператор выбора if-else просто неудобно.

Синтаксис switch-case таков:

switch (выражение){case значение1: команды_1; [break;]…case значениеN: команды_N; [break;][default:команды_по_умолчанию; [break;]]

}

Альтернативный синтаксис конструкции выглядит так:

switch (выражение):
case значение1: команды1; [break;]

case значениеN: команды_N; [break;][default: команды_по_умолчанию; [break;]]

endswitch;

Работает эта конструкция следующим образом:

1. Вычисляется значение выражения.

2. Просматривается набор значений. Пусть значение i равно значению выражения, вычисленного на первом шаге. Если не указан оператор break, то будут выполнены команды i, i+1, i+2, … ,N. В противном случае (есть break) будет выполнена только команда с номером i.

3. Если ни одно значение из набора не совпало со значением выражения, тогда выполняется блок default, если он указан.

Небольшой пример:

Если переменная $age равна 21, тогда будут выведены строки:

Вам двадцать один годВам двадцать два года

Вам 21 лет

Ясное дело, что нам нужно, чтобы программа вывела только одну строку, поэтому нужно использовать операторы break:

Если кто-то знает язык Pascal, то в нем была подобная конструкция case, позволяющая указывать диапазоны значений:

case (age)10. .20 : writeln (‘Вам от 10 до 20 лет’); …

end;

В PHP такую возможность можно реализовать так (диапазон 20…22):