Переключатель switch является наиболее удобным средством для организации
мультиветвления. Синтаксис переключателя таков:
switch(expression) // переключающее выражение{casevalue1: // константное выражение 1statements; // блок операторов
break;
casevalue2: // константное выражение 2statements;
break;
default:
statements;
}
Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали:
<?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 не могут выступать только массивы и объекты.
На многих сайтах для подтверждения того, что вы являетесь реальным человеком, а не роботом, нужно решить так называемую «капчу» — например, распознать деформированные буквы на картинке. Среди вариантов реализации этих систем выделяется reCAPTCHA, где пользователю предлагается ввести два слова, которые взяты из отсканированных книг. Одно слово читается легко, и именно по нему производится проверка, а второе слово значительно сложнее, причём его правильность не анализируется, так как оно не распознано автоматической системой сканирования. Эти слова предлагаются разным людям, а затем система принимает тот вариант, который вводится наиболее часто — таким образом миллионы пользователей интернета помогают компьютерам в оцифровке старых книг.