Switch - конструкция выбора


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

Конструкция является аналогом if-else. Ее целесообразно использовать если вариантов значений очень много и длякаждого варианта нужно выполнить уникальное действие.

Синтаксис конструкции switch:

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

Конструкция работает по принципу:

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

Пример использования:

<?php
$z
=1;///////наше выражение равно 1
// Используем switch

switch ($x) {
case
0:
    print
"z = 0";
    break;
case
1:
    print
"z = 1";
    break;
case
2:
    print
"z = 2";
    break;
}

?>

В нашем случае на экран будет выведено: z=1.

Так же в качестве значения может быть использовано символьное выражение.

<?php
$x
="Один";
switch (
$x) {
case
"Один":
    print
"Один";
break;
case
"Два":
    print
"Два";
break;
    print
"Три":
    echo
"Три";
break;
}

?>

На экран будет выведено: Один

Switch выполняется поэтапно. Сначала ни одна инструкция не исполняется. Как только найдена конструкция case с соответствующим значением, скрипт начинает выполнять инструкции. Интерпретатор будет выполнять код до тех пор пока не встретится оператор break.

<?php
$z
=0;
switch (
$z) {
case
0:
    print
"z=0, ";
case
1:
    print
"z=1, ";
case
2:
    print
"z=2";
}

/*
Без использования break на экран будет выведено
z=0, z=1, z=2
*/

?>

Инструкции для case могут быть не заданы, в этом случае он передаст управление следующей конструкции case.

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

Оператор имеет и альтернативный синтаксис:

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

Теги