我覺得有必要提供一個比其他註解更優雅的使用 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; ?>