我觉得有必要给出比其他评论更优雅的 heredoc 方法
<ul>
<?php foreach($list as $item): echo
<<<ITEM
<li id="itm-$item[number]">Item $item[name]</li>
ITEM;
endforeach; ?>
</ul>
这更适合多行块,因为你只需要一个整体的 php 标签。
(即使省略结束 </li> 标签是合法的,请不要省略它,个人偏好)
(PHP 4, PHP 5, PHP 7, PHP 8)
PHP 为其某些控制结构提供了替代语法;即,if
、while
、for
、foreach
和 switch
。在每种情况下,替代语法的基本形式都是将左大括号更改为冒号 (:),并将右大括号更改为 endif;
、endwhile;
、endfor;
、endforeach;
或 endswitch;
,分别。
<?php if ($a == 5): ?>
A 等于 5
<?php endif; ?>
在上面的示例中,HTML 块“A 等于 5”嵌套在用替代语法编写的 if
语句中。只有当 $a 等于 5 时才会显示 HTML 块。
替代语法也适用于 else
和 elseif
。以下是具有 elseif
和 else
的 if
结构,它们以替代格式出现
<?php
if ($a == 5):
echo "a 等于 5";
echo "...";
elseif ($a == 6):
echo "a 等于 6";
echo "!!!";
else:
echo "a 既不是 5 也不是 6";
endif;
?>
注意:
不支持在同一个控制块中混合语法。
在 switch
语句和第一个 case
之间的任何输出(包括空格)都会导致语法错误。例如,以下内容无效
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch; ?>
而以下内容有效,因为 switch
语句后的尾随换行符被认为是结束 ?>
的一部分,因此在 switch
和 case
之间没有任何输出
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch; ?>