- PHP: Альтернативный синтаксис управляющих конструкций
- if
- Альтернативный синтаксис управляющих структур
- Альтернативный синтаксис в PHP
- Пример альтернативого синтаксиса для работы с условием if
- Пример альтернативого синтаксиса для работы с циклом foreach
- Альтернативный синтаксис для управляющей структуры switch
- Альтернативный синтаксис для циклов for
- Альтернативный синтаксис для цикла while
- Php switch альтернативный синтаксис
- Php switch альтернативный синтаксис
- match
- Сравнение значений и типов
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; ?>
Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.
Альтернативный синтаксис управляющих структур
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:
Альтернативный синтаксис в 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;
?>?php
Замечание:
Смешивание синтаксиса в одном и том же блоке управления не поддерживается.
Любой вывод (включая пробельные символы) между выражением 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, поэтому будет выполняься блок: