PHP Conference Japan 2024

控制結構的替代語法

(PHP 4, PHP 5, PHP 7, PHP 8)

PHP 為某些控制結構提供了替代語法;也就是 ifwhileforforeachswitch。在每一種情況下,替代語法的基本形式是將開括號改為冒號 (:),並將閉括號分別改為 endif;endwhile;endfor;endforeach;endswitch;

<?php if ($a == 5): ?>
A 等於 5
<?php endif; ?>

在上面的例子中,HTML 區塊「A 等於 5」嵌套在以替代語法編寫的 if 陳述式中。僅當 $a 等於 5 時,才會顯示 HTML 區塊。

替代語法也適用於 elseelseif。以下是具有替代格式的 elseifelseif 結構

<?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 陳述式後面的尾隨換行符號被視為結束 ?> 的一部分,因此在 switchcase 之間沒有任何輸出

<?php switch ($foo): ?>
<?php
case 1: ?>
...
<?php endswitch; ?>

另請參閱 whileforif 以獲得更多範例。

新增註解

使用者貢獻的註解 1 則註解

toxyy
2 年前
我覺得有必要提供一個比其他註解更優雅的使用 heredoc 的方法

<ul>
<?php foreach($list as $item): echo
<<<ITEM
<li id="itm-$item[number]">Item $item[name]</li>
ITEM;
endforeach;
?>
</ul>

這種寫法更適合多行區塊,因為你只需要一個 PHP 標籤。

(即使省略 </li> 標籤是合法的,也請不要省略,這是個人偏好)
To Top