Нами осталась незамеченной очень важная конструкция в 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):