PHP: Альтернативный синтаксис управляющих структур
Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther
Submit a Pull Request Report a Bug
(PHP 4, PHP 5, PHP 7, PHP 8)
PHP предлагает альтернативный синтаксис для некоторых его
управляющих структур, а именно: if
, while
, for
, foreach
и switch
.
В каждом случае основной формой альтернативного синтаксиса является изменение
открывающей фигурной скобки на двоеточие (:), а закрывающей скобки
на endif;
, endwhile;
, endfor;
, endforeach;
или endswitch;
соответственно.
В приведённом выше примере, блок HTML «A равно 5» вложен внутрь
структуры if
, написанной с альтернативным синтаксисом.
Блок HTML будет показан только если переменная $a равна 5.
Альтернативный синтаксис также применяется и к
else
и elseif
.
if
с elseif
и else
в альтернативном формате:Замечание:
Смешивание синтаксиса в одном и том же блоке управления не поддерживается.
Внимание
Любой вывод (включая пробельные символы) между выражением switch
и первым case
приведут к синтаксической ошибке.
Например, данный код не будет работать:
В то же время следующий пример будет работать,
так как завершающий перевод строки после выражения switch
считается частью закрывающего
?>
и следовательно ничего не выводится между switch
и case
:Смотрите также while, for и if для дальнейших примеров.
+add a note
User Contributed Notes 2 notes
up
down
4
toxyy ¶
6 months ago
I feel compelled to give a more elegant way using heredoc than the other comment:
<ul>
<?php foreach($list as $item): echo
<<<ITEM
<li>Item $item[name]</li>
ITEM;
endforeach; ?>
</ul>
Which works better with multi line blocks, as you only need one overall php tag.
(please don't omit the closing </li> tag despite it being legal, personal preference)
up
down
-34
johannes dot kingma at gmail dot com ¶
11 months ago
The alternative control syntax can be combined elegantly with the short php notation <?- => for output where both blend in into the html code
<ul>
<?php for($counter=0; $counter<10; $counter++) :?>
<li>Item <?=$counter?>
<?php endfor;?>
</ul>(Btw. ommiting the </li> is perfectly legal)
+add a note
12. Альтернативный синтаксис управляющих конструкций PHP
Язык PHP помимо классического синтаксиса таких конструкций как if, switch, while, for и foreach поддерживает ещё и альтернативный. Вы, возможно, успевали замечать в записях на форумах знакомые if без фигурных скобок и с двоеточиями? Всё верно, это тот же PHP, но открывающую фигурную скобку заменили на двоеточие (:), а закрывающую — на соответствующее ключевое слово endif, endswitch, endwhile, endfor и endforeach, которое соответствует используемой конструкции.
if
При использовании в управляющих конструкциях альтернативного синтаксиса, фигурные скобки не ставятся, даже если используется несколько инструкций. После условия ставится двоеточие, после которого указывается одна или более инструкций, в самом конце, для указания завершения общей конструкции используется ключевое слово endif.
<?php
$a = 4;
$b = 3;
if ($a > $b):
echo $a . " больше";
echo ", чем " . $b;
elseif ($a == $b): // Обратите внимание, здесь elseif записан в одно слово.echo $a." равно ".$b;
else:
echo $a." меньше ".$b;
endif;
?>
Внимание! При альтернативной записи условий if/elseif важно учитывать тот факт, что elseif нужно писать в одно слово, тогда как else if уже вызовет фатальную ошибку в PHP.![]() |
<?php
/* Этот код вызовет ошибку: */
if ($a > $b):
echo $a." больше, чем ".$b;
else if ($a == $b):
echo $a." равно ".$b;endif;
?>
Не допускается смешивание двух видов записи в рамках одной конструкции. Код не будет работать если в одном месте вы пишете полную запись, а в другом альтернативную. Это относится ко всем конструкциям, упоминаемым в статье.
<?php
/*Этот код не будет работать*/
if($a > $b):
echo $a . " больше";
echo ", чем " . $b;
elseif ($a == $b) { // нельзя смешивать два вида записей в одной конструкции
echo $a." равно ".$b;
}
else:
echo $a." меньше ".$b;
endif;
?>
Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.
switch
<?php
$num = 2;
switch ($num):
case 0:
echo "\$num равно 0";
break;
case 1:
echo "\$num равно 1";
break;
case 2:
echo "\$num равно 2";break;
default:
echo "\$num не равно 0, 1 или 2";
endswitch;
?>
while
<?php
$num = 5;
while ($num--):
echo "$num";
endwhile;
?>
for
<?php
for ($k = 1; $k <= 10; $k++):
echo "$k ";
endfor;
// пример с вложенным циклом
for ($i = 0; $i < 4; $i++):
echo "Внешний цикл.";
for ($j = 0; $j < 2; $j++):
echo "Вложенный цикл.";
endfor; //вложенные конструкции тоже надо завершать ключевым словом
endfor;
?>
Если вы планируете использовать классическую запись с фигурными скобками, но в другой конструкции: вложенной или параллельной, то код успешно отработается, но не рекомендуется это делать из соображений читабельности и чистоты (однотипности) кода.
<?php
for ($i = 0; $i < 4; $i++):
echo "Внешний цикл.";
for ($j = 0; $j < 2; $j++) {
echo "Вложенный цикл."; // всё успешно отработает}
endfor;?>
Дополнительные возможности: html внутри управляющих конструкций
Переходим к следующей особенности использования альтернативного синтаксиса. Когда можно использовать и как он может соседствовать с html-кодом.
Ниже простой пример:
<?php if ($a == 10): ?>
<p>A равно 10</p>
<?php endif; ?>
В коде выше, блок с html — A равно 10 — расположен в конструкции if, написанной с альтернативным синтаксисом. HTML, то есть параграф с содержимым, отобразится только в тогда, когда значение переменной $a будет равняться 10.
Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.
Рассмотрим примеры для других конструкций:
<ul>
<!-- использование конструкции for-->
<?php for ($items = 1; $items <= 10; $items++): ?>
<li><?php echo $items ?></li>
<?php endfor; ?>
</ul>
<ul>
<!--тоже самое, но с использованием конструкции while-->
<?php $items = 1; while ($items <= 10): ?><li><?php echo $items ?></li>
<?php $items++; endwhile; ?>
</ul>
<!--использование конструкции switch-->
<?php switch ($item):
case 1: ?>
<p>Значение равно 1.</p>
<?php break; ?>
<?php default: ?>
<p>Значение не известно.</p>
<?php endswitch; ?>
Никто не заставляет использовать подобную альтернативную запись, но удобство при чтении кода, мнения специалистов и миллионы строк кода по всему мира в таком формате делает подобное решение рекомендуемым) Так что присмотритесь, попробуйте на досуге написать таким образом конструкцию. Вероятнее всего, такой записью вы и будете в дальнейшем пользоваться.
<?php if ($a == 10) { ?>
<p>A равно 10</p>
<?php } else { ?>
<p>A не равно 10</p>
<?php } ?>
А теперь самостоятельно!)
Успехов!
PHP: Альтернативный синтаксис для управляющих структур
Изменение языка: английскийбразильский португальскийкитайский (упрощенный)французскийнемецкийяпонскийрусскийиспанскийтурецкийДругое
Отправить запрос на вытягивание Сообщить об ошибке
(PHP 4, PHP 5, PHP 7, PHP 8)
PHP предлагает альтернативный синтаксис для некоторых элементов управления. конструкции; а именно
если
, в то время как
, вместо
, для каждого
и для переключения
.
В каждом случае основной формой альтернативного синтаксиса является изменение
открывающая фигурная скобка для двоеточия (:) и закрывающая скобка для конец;
, окончание;
, эндфор;
, endforeach;
или
концевой выключатель ;
соответственно.
В приведенном выше примере блок HTML «A равно 5» вложен в , если оператор
написан альтернативным синтаксисом.
Блок HTML будет отображаться, только если $a равно 5.
Альтернативный синтаксис применяется к , иначе
и , иначе
. Ниже приводится , если структура
с , иначе
и иначе
в альтернативном формате:
Примечание :
Смешивание синтаксисов в одном блоке управления не поддерживается.
Предупреждение
Любой вывод (включая пробелы) между переключателем
оператор и первый случай
приведет к синтаксису
ошибка. Например, это неверно:
Принимая во внимание, что это действительно так, поскольку завершающая новая строка после
9Оператор 0009 switch считается частью закрытия ?>
и, следовательно, ничего не выводится между
Переключатель
и корпус
:
См. также пока, для и если для дальнейших примеров.
+ добавить примечание
Пользовательские заметки 2 заметки
вверх
вниз
4
toxyy ¶
6 месяцев назад
Я чувствую себя обязанным дать более элегантный способ использования heredoc, чем другой комментарий:
-
- Item $item[name]
ITEM;
конецфореач; ?>
<<
Что лучше работает с многострочными блоками, так как вам нужен только один общий тег php.
(пожалуйста, не опускайте закрывающий тег, несмотря на то, что это законно, личное предпочтение)
вверх
вниз
-34
йоханнес точка кингма в gmail точка ком ¶
11 месяцев назад
Альтернативный синтаксис управления можно элегантно комбинировать с короткой нотацией php для вывода, где оба смешиваются с HTML-кодом
- Item
(кстати, опущение вполне допустимо)
+ добавить примечание
Php Endif Endforeach Endwhile с примерами кода
Php Endif Endforeach Endwhile с примерами кода
Всем привет! В этом посте мы рассмотрим, как найти ответ на Php Endif Endforeach End, используя компьютерный язык.
<таблица> <тд>
<таблица> <тд>