2024年PHP开发者大会日本站

控制结构的替代语法

(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