This article has been localized into Russian by the community.
Оператор switch
Оператор switch можно рассматривать как альтернативу нескольким if, как управляющую структуру с некоторым набором вариантов. Для каждого варианта можно задать свое действие. Оператор switch отлично подходит для выбора одного варианта из множества возможных, его легко читать и модифицировать к возможным изменениям.
Оператор switch строится вокруг условия, к которому предлагаются возможные значения - case, каждый из которых ведет к какому-то действию. Рассмотрим пример:
<?php
$answer = 0;
if(isset($_GET["answer"]))
$answer = $_GET["answer"];
switch($answer)
{
default:
echo "Which version of PHP are you using?<br /><br />";
echo "<a href=\"?answer=3\">3</a><br />";
echo "<a href=\"?answer=4\">4</a><br />";
echo "<a href=\"?answer=5\">5</a><br />";
break;
case 3:
echo "Ugh that's old, upgrade now!";
break;
case 4:
echo "Still on version 4? Give PHP 5 a try!";
break;
case 5:
echo "Good choice!";
break;
}
?>
Первая пара строк позволяет получить ответ на наш вопрос из строки запроса (query) - пока можете не заострять на этом внимание, переменные $_GET и $_POST будут объясняться позже.
Дальше идет собственно оператор switch. Он состоит из ключевого слова switch и следующего за ним условия, которое мы хотим проверить. В нашем случае мы используем переменную $answer, в которой находится значение, полученное из строки запроса. Внутри оператора switch мы начинаем определять case-ы. Первый вариант особенный, поскольку вместо того, чтобы проверить какое-то конкретное значение, мы используем ключевое слово default (по умолчанию), чтобы определить действие, которое нужно выполнить только если ни один из остальных вариантов не подойдет. В нашем примере это позволяет нам вывести вопрос, который мы хотим задать, и несколько ссылок с ответами на него. Мы спрашиваем у пользователя, какую версию PHP он использует, и как только он перейдет по какой-нибудь ссылке, мы выведем результат для соответствующей версии. Если не выбран никакой ответ, или вариант ответа не соответствует ни одному case-у, мы просто выведем сам вопрос, указанный в default.
Каждый вариант состоит из ключевого слова case, затем значение, которое он проверяет, двоеточие, код, который должен тут выполниться, и в конце оператор break, чтобы показать, что если мы нашли нужный вариант, то можно остановиться и перейти в конец switch, а остальные варианты пропустить.
Это может показаться немного сложным, но попробуйте запустить пример и повыбирать разные варианты, и вы вскоре увидите, что работать со switch на самом деле очень просто.
Оператор switch позволяет группировать несколько вариантов в один case, и в PHP можно в качестве значений использовать строки. Вот небольшой пример:
$color = "red";
switch($color)
{
case "red":
case "blue":
case "green":
echo "Nice basic color!";
break;
case "black":
echo "Too dark!";
break;
case "white":
echo "Too bright!";
break;
}