- switch
- While switch case php
- While switch case php
- Альтернативный синтаксис в PHP
- Пример альтернативого синтаксиса для работы с условием if
- Пример альтернативого синтаксиса для работы с циклом foreach
- Альтернативный синтаксис для управляющей структуры switch
- Альтернативный синтаксис для циклов for
- Альтернативный синтаксис для цикла while
switch
Оператор switch подобен серии операторов IF с одинаковым условием. Во многих случаях вам может понадобиться сравнивать одну и ту же переменную (или выражение) с множеством различных значений, и выполнять различные участки кода в зависимости от того, какое значение принимает эта переменная (или выражение). Это именно тот случай, для которого удобен оператор switch.
Замечание: Обратите внимание, что в отличие от некоторых других языков, оператор continue применяется в конструкциях switch и действует подобно оператору break. Если у вас конструкция switch находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте continue 2.
Замечание:
Заметьте, что конструкция swich/case использует неточное сравнение (==).
Следующие два примера иллюстрируют два различных способа написать то же самое. Один использует серию операторов if и elseif, а другой — оператор switch:
Пример #1 Оператор switch
if ( $i == 0 ) echo «i равно 0» ;
> elseif ( $i == 1 ) echo «i равно 1» ;
> elseif ( $i == 2 ) echo «i равно 2» ;
>
?php
switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
>
?>
Пример #2 Оператор switch допускает сравнение со строками
switch ( $i ) case «яблоко» :
echo «i это яблоко» ;
break;
case «шоколадка» :
echo «i это шоколадка» ;
break;
case «пирог» :
echo «i это пирог» ;
break;
>
?>?php
Важно понять, как оператор switch выполняется, чтобы избежать ошибок. Оператор switch исполняет строчка за строчкой (на самом деле выражение за выражением). В начале никакой код не исполняется. Только в случае нахождения оператора case, значение которого совпадает со значением выражения в операторе switch, PHP начинает исполнять операторы. PHP продолжает исполнять операторы до конца блока switch либо до тех пор, пока не встретит оператор break. Если вы не напишете оператор break в конце секции case, PHP будет продолжать исполнять команды следующей секции case. Например :
switch ( $i ) case 0 :
echo «i равно 0» ;
case 1 :
echo «i равно 1» ;
case 2 :
echo «i равно 2» ;
>
?>?php
В этом примере, если $i равно 0, то PHP исполнит все операторы echo! Если $i равно 1, PHP исполнит два последних оператора echo. Вы получите ожидаемое поведение оператора (‘i равно 2’ будет отображено) только, если $i будет равно 2. Таким образом, важно не забывать об операторах break (даже если вы, возможно, хотите избежать его использования по назначению при определенных обстоятельствах).
В операторе switch выражение вычисляется один раз и этот результат сравнивается с каждым оператором case. В выражении elseif, выражение вычисляется снова. Если ваше условие более сложное, чем простое сравнение и/или находится в цикле, конструкция switch может работать быстрее.
Список операторов для исполнения в секции case также может быть пустым, что просто передает управление списку операторов в следующей секции case.
switch ( $i ) case 0 :
case 1 :
case 2 :
echo «i меньше чем 3, но неотрицательно» ;
break;
case 3 :
echo «i равно 3» ;
>
?>?php
Специальный вид конструкции case — default. Сюда управление попадает тогда, когда не сработал ни один из других операторов case. Например:
switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно 0, 1 или 2» ;
>
?>?php
Выражением в операторе case может быть любое выражение, которое приводится в простой тип, то есть в тип integer, или в тип с плавающей точкой (float), или строку. Массивы или объекты не могут быть здесь использованы до тех пор, пока они не будут разыменованы до простого типа.
Возможен альтернативный синтаксис для управляющей структуры switch. Для более детальной информации, см. Альтернативный синтаксис для управляющих структур.
switch ( $i ):
case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно to 0, 1 или 2» ;
endswitch;
?>?php
Возможно использование точки с запятой вместо двоеточия после оператора case. К примеру :
switch( $beer )
case ‘tuborg’ ;
case ‘carlsberg’ ;
case ‘heineken’ ;
echo ‘Хороший выбор’ ;
break;
default;
echo ‘Пожалуйста, сделайте новый выбор. ‘ ;
break;
>
?>?php
While switch case php
PHP предлагает альтернативный синтаксис для некоторых его управляющих структур, а именно: if , while , for , foreach и switch . В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif; , endwhile; , endfor; , endforeach; или endswitch; соответственно.
В приведённом выше примере, блок HTML «A равно 5» вложен внутрь структуры if , написанной с альтернативным синтаксисом. Блок HTML будет показан только если переменная $a равна 5.
Альтернативный синтаксис также применяется и к else и elseif . Ниже приведена структура if с elseif и else в альтернативном формате:
if ( $a == 5 ):
echo «a равно 5» ;
echo «. » ;
elseif ( $a == 6 ):
echo «a равно 6» ;
echo «. » ;
else:
echo «a не равно ни 5 ни 6» ;
endif;
?>?php
Замечание:
Смешивание синтаксиса в одном и том же блоке управления не поддерживается.
Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке. Например, данный код не будет работать:
В то же время следующий пример будет работать, так как завершающий перевод строки после выражения switch считается частью закрывающего ?> и следовательно ничего не выводится между switch и case :
Смотрите также while, for и if для дальнейших примеров.
While switch case php
Оператор switch похож на ряд операторов IF с одинаковым условием. Во многих случаях вам может понадобиться сравнивать одну и ту же переменную (или выражение) с множеством различных значений и выполнять различные участки кода в зависимости от того, какое значение принимает эта переменная (или выражение). Это именно тот случай, для которого удобен оператор switch .
Замечание: Обратите внимание, что в отличие от некоторых других языков, оператор continue применяется в конструкциях switch и действует подобно оператору break . Если у вас конструкция switch находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте continue 2 .
Замечание:
Заметьте, что конструкция switch/case использует нестрогое сравнение (==).
В следующем примере каждый блок кода эквивалентен. В одном используется серия операторов if и elseif , а в другом — оператор switch . В каждом случае результат один и тот же.
Пример #1 Оператор switch
switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
>
if ( $i == 0 ) echo «i равно 0» ;
> elseif ( $i == 1 ) echo «i равно 1» ;
> elseif ( $i == 2 ) echo «i равно 2» ;
>
?>
Пример #2 Оператор switch допускает сравнение с типом string
switch ( $i ) case «яблоко» :
echo «i это яблоко» ;
break;
case «шоколадка» :
echo «i это шоколадка» ;
break;
case «пирог» :
echo «i это пирог» ;
break;
>
?>?php
Важно понять, как оператор switch выполняется, чтобы избежать ошибок. Оператор switch исполняет строчка за строчкой (на самом деле выражение за выражением). В начале никакой код не исполняется. Только в случае нахождения оператора case , значение которого совпадает со значением выражения в операторе switch , PHP начинает исполнять операторы. PHP продолжает исполнять операторы до конца блока switch либо до тех пор, пока не встретит оператор break . Если вы не напишете оператор break в конце секции case, PHP будет продолжать исполнять команды следующей секции case. Например :
switch ( $i ) case 0 :
echo «i равно 0» ;
case 1 :
echo «i равно 1» ;
case 2 :
echo «i равно 2» ;
>
?>?php
В этом примере, если $i равно 0, то PHP исполнит все операторы echo! Если $i равно 1, PHP исполнит два последних оператора echo. Вы получите ожидаемое поведение оператора (‘i равно 2’ будет отображено) только, если $i будет равно 2. Таким образом, важно не забывать об операторах break (даже если вы, возможно, хотите избежать его использования по назначению при определённых обстоятельствах).
В операторе switch выражение вычисляется один раз и этот результат сравнивается с каждым оператором case . В выражении elseif , выражение вычисляется снова. Если ваше условие более сложное, чем простое сравнение и/или находится в цикле, конструкция switch может работать быстрее.
Список операторов для исполнения в секции case также может быть пустым, что просто передаёт управление списку операторов в следующей секции case.
switch ( $i ) case 0 :
case 1 :
case 2 :
echo «i меньше чем 3, но неотрицательный» ;
break;
case 3 :
echo «i равно 3» ;
>
?>?php
Специальный вид конструкции case — default . Сюда управление попадает тогда, когда не сработал ни один из других операторов case. Например:
switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно 0, 1 или 2» ;
>
?>?php
Замечание: Несколько указаний default вызовут ошибку E_COMPILE_ERROR .
Замечание: Формально конструкция default может быть перечислена в любом месте. Она будет использоваться только в том случае, если ни один другой вариант не подходит. Однако, по соглашению, лучше всего поместить её в конец, как последнюю конструкцию.
Если ни одна конструкция case не совпадает и нет конструкции default , то код не будет выполнен, как если бы ни одно утверждение if не было истинным.
Значение case может быть задано в виде выражения. Однако это выражение будет оценено само по себе, а затем слабо сопоставлено со значением switch. Это означает, что его нельзя использовать для сложных оценок значения switch. Например:
switch ( $target ) case $start — 1 :
print «A» ;
break;
case $start — 2 :
print «B» ;
break;
case $start — 3 :
print «C» ;
break;
case $start — 4 :
print «D» ;
break;
>
Для более сложных сравнений в качестве значения switch может использоваться значение true . Или, как вариант, вместо switch использовать блоки if — else .
switch ( true ) case $start — $offset === 1 :
print «A» ;
break;
case $start — $offset === 2 :
print «B» ;
break;
case $start — $offset === 3 :
print «C» ;
break;
case $start — $offset === 4 :
print «D» ;
break;
>
Возможен альтернативный синтаксис для управляющей структуры switch. Для более детальной информации, смотрите Альтернативный синтаксис для управляющих структур.
switch ( $i ):
case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно 0, 1 или 2» ;
endswitch;
?>?php
Возможно использование точки с запятой вместо двоеточия после оператора case. К примеру :
switch( $beer )
case ‘tuborg’ ;
case ‘carlsberg’ ;
case ‘stella’ ;
case ‘heineken’ ;
echo ‘Хороший выбор’ ;
break;
default;
echo ‘Пожалуйста, сделайте новый выбор. ‘ ;
break;
>
?>?php
Альтернативный синтаксис в PHP
Альтернативный синтаксис поддерживается для нескольких управляющих структур, а именно для if , while , for , foreach и switch .
В каждом случае основной формой альтернативного синтаксиса является замена открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif , endwhile , endfor , endforeach или endswitch в зависимости от используемой управляющей структуры.
Смешивание синтаксиса в одном и том же блоке управления не поддерживается
Пример альтернативого синтаксиса для работы с условием if
Пример альтернативного синтаксиса:
— блок HTML будет показан только если переменная $a равна 5 .
Альтернативный синтаксис также применяется и к else и elseif .
Структура if с elseif и else в альтернативном формате:
$a = 7 ;
if ( $a == 5 ) :
echo «a равно 5» ;
echo «. » ;
elseif ( $a == 6 ) :
echo «a равно 6» ;
echo «. » ;
else :
echo «a не равно ни 5 ни 6» ;
endif ;
// выведет: ‘a не равно ни 5 ни 6’
?>
Пример вывода html-кода для управляющей структуры if , используя aльтернативный синтаксис if — endif :
Пример альтернативого синтаксиса для работы с циклом foreach
выведет:
Name: Ivan, Surname: Ivanov
Name: Petr, Surname: Petrov
Name: Sidor, Surname: Sidorov
Альтернативный синтаксис для управляющей структуры switch
$var = 3 ;
switch ( $var ):
case 1 :
echo ‘Variable = 1’ ;
break ;
case 2 :
echo ‘Variable = 2’ ;
break ;
case 3 :
echo ‘Variable = 3’ ;
break ;
default :
echo ‘Something else. ‘ ; // Что-то еще .
endswitch ;
// выведет: Variable = 3
?>
Альтернативный синтаксис для циклов for
PHP также поддерживает альтернативный синтаксис с двоеточием для циклов for :
for ( expr1 ; expr2 ; expr3 ) :
тело цикла
.
endfor ;
двоеточие : — альтернатива открывающей фигурной скобки
— expr1; — первое выражение — это инициализация счетчика ;
— expr2; — второе выражение — это проверка условия ;
— expr3 — третье выражение — это изменение счетчика .
— endfor — альтернатива закрывающей фигурной скобки
Альтернативный синтаксис для цикла while
$i = 1 ;
while ( $i 10 ) :
echo ‘
‘ ;
echo $i ;
$i++ ;
endwhile ;
// выведет цифры от 1 до 10
?>
— если условие изначально не выполняется, то блок кода не выполнится ни разу.