Php switch альтернативный синтаксис

PHP: Альтернативный синтаксис управляющих конструкций

PHP поддерживает альтернативный синтаксис для некоторых управляющих конструкций, а именно для: if, switch, while, for и foreach . Основная форма альтернативного синтаксиса заключается в замене открывающей фигурной скобки на двоеточие ( : ), завершающая фигурная скобка заменяется на ключевое слово endif, endswitch, endwhile, endfor и endforeach , которое соответствует используемой конструкции.

if

При использовании в управляющих конструкциях альтернативного синтаксиса, фигурные скобки не ставятся, даже если используется несколько инструкций. После условия ставится двоеточие, после которого указывается одна или более инструкций, в самом конце, для указания завершения общей конструкции используется ключевое слово endif .

 $b): echo $a . " больше"; echo ", чем " . $b; elseif ($a == $b): // Обратите внимание, здесь elseif записан в одно слово. echo $a." равно ".$b; else: echo $a." меньше ".$b; endif; ?>

Замечание : если для определения нескольких условий if/elseif используется альтернативный синтаксис, в этом случае можно использовать только elseif в одно слово, т.е. вы не должны разделять else if в два слова, так как это вызовет фатальную ошибку в PHP.

 $b): echo $a." больше, чем ".$b; else if ($a == $b): echo $a." равно ".$b; endif; ?>

Смешивание двух видов синтаксиса в одной конструкции не поддерживается, это правило относится ко всем операторам указанных в этой главе.

 $b): echo $a . " больше"; echo ", чем " . $b; elseif ($a == $b) < // нельзя смешивать два вида записей в одной конструкции echo $a." равно ".$b; >else: echo $a." меньше ".$b; endif; ?>

Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.

Читайте также:  Store form data in .txt file

Источник

Альтернативный синтаксис управляющих структур

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;
?>

Замечание:

Смешивание синтаксиса в одном и том же блоке управления не поддерживается.

Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке. Например этот код не будет работать:

В то же время следующий пример будет работать, так как завершающий перевод строки после выражения switch считается частью закрывающего ?> и следовательно ничего не выводится между switch и case:

Источник

Альтернативный синтаксис в 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
?>

— если условие изначально не выполняется, то блок кода не выполнится ни разу.

Источник

Php switch альтернативный синтаксис

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;
?>

Замечание:

Смешивание синтаксиса в одном и том же блоке управления не поддерживается.

Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке. Например, данный код не будет работать:

В то же время следующий пример будет работать, так как завершающий перевод строки после выражения switch считается частью закрывающего ?> и следовательно ничего не выводится между switch и case :

Смотрите также while, for и if для дальнейших примеров.

Источник

Php switch альтернативный синтаксис

Конструкция switch..case является альтернативой использованию конструкции if..elseif..else . Оператор switch получает некоторое выражение и сравнивает его с набором значений:

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase . И если совпадение будет найдено, то будет выполняться определенный блок сase.

Конструкция switch может содержать произвольное количество операторов case. В конце блока сase ставится оператор break , чтобы избежать выполнения других блоков.

Весь блок switch помещается в фигурные скобки, однако блок каждого отдельного оператора case НЕ помещается в фигурные скобки.

Например, возьмем следующую конструкцию if..elseif..else :

$a = 3; if($a==1) echo "сложение"; elseif($a==2) echo "вычитание"; elseif($a==3) echo "умножение"; elseif($a==4) echo "деление";

Теперь перепишем ее с помощь конструкции switch..case :

То есть на вход в конструкцию switch передается переменная $a , и ее значение последовательно сравнивается со значениями, указанными после операторов case . Так, в данном случае переменная $a равна 3, поэтому выполнение дойдет до блока

case 3: echo "умножение"; break;

и этот блок и будет выполняться.

Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default :

Конструкция switch..case также поддерживает альтернативный синтаксис, при котором вместо открывающей блок фигурной скобки ставится двоеточие, а вместо закрывающей фигурной скобки — ключевое слово endswitch :

$a = 3; switch($a): case 1: echo "сложение"; break; case 2: echo "вычитание"; break; default: echo "действие по умолчанию"; break; endswitch

match

Начиная с версии 8.0 в PHP была добавлена поддержка другой, похожей конструкции — match . Она позволяет оптимизировать конструкцию switch . Конструкция match также принимает некоторое выражение и сравнивает его с набором значений.

Например, пусть у нас есть следующий код:

$a = 2; switch($a) < case 1: $operation = "сложение"; break; case 2: $operation = "вычитание"; break; default: $operation = "действие по умолчанию"; break; >echo $operation;

Перепишем этот пример с использованием match :

$a = 2; $operation = match($a) < 1 =>"сложение", 2 => "вычитание", default => "действие по умолчанию", >; echo $operation;

Итак, match в скобках также принимает некоторое сравниваемое выражение (в данном случае это переменная $a). Сам блок кода match также обертывается в фигурные скобки, однако в конце после закрывающей фигурной скобки необходимо поставить точку с запятой. А вместо операторов case просто указываются значения, с которыми сравнивается выражение.

Но в отличие от switch , конструкция match возвращает некоторый результат. Поэтому после каждого сравнимого значения ставится оператор => , после которого идет возвращаемый результат.

То есть в данном случае переменная $a равна 2, поэтому в конструкции match будет выполнять блок

Этот блок установит в качестве возвращаемого результата строку «вычитание» .

Поскольку конструкция match возвращает результат, то этот результат мы можем присвоить другой переменной:

В итоге в переменной $operation будет храниться строка «вычитание» .

Также мы можем переписать предыдущий пример следующим образом:

$a = 2; match($a) < 1 =>$operation = "сложение", 2 => $operation = "вычитание", default => $operation = "действие по умолчанию", >; echo $operation;

Сравнение значений и типов

Стоит отметить важное отличие конструкции switch от match : switch сравнивает только значение, но не учитывает тип выражения. Тогда как match также учитывает тип сравниваемого выражения. Рассмотрим разницу на примере. Пусть есть следующая конструкция switch:

switch (8.0) < case "8.0": $result = "строка"; break; case 8.0: $result = "число"; break; >echo $result; // строка

В конструкцию switch передается в качестве выажения число 8.0, но с точки зрения внутренней логики конструкции switch это выражение также соответствует строке «8.0». Поэтому в данном случае будет выполняться блок

case "8.0": $result = "строка"; break;

Теперь посмотрим, что будет в аналогичном примере с match:

match (8.0) < "8.0" =>$result = "строка", 8.0 => $result = "число" >; echo $result; // число

Конструкция match также будет учитывать тип выражения, а тип в данном случае float, поэтому будет выполняься блок:

Источник

Оцените статью