Php: while...endwhile; 和 while { // stuff here } 的区别是什么?

25

什么是区别?

while (expression):

// do stuff

endwhile;
and
while {

}

6
使用不同的语法结构可能会使编辑更加困难,因为在集成开发环境中无法进行花括号匹配。 - webbiedave
你能再解释一下吗? - redconservatory
1
编程文本编辑器通常会在光标悬停在大括号 '{...}' 上时突出显示标准语法,以便轻松识别语句块和控制流。如果有许多嵌套的控制结构和糟糕的缩进,则替代语法可能会令人沮丧。 - agtb
4个回答

44

没有实际功能上的区别。

在实际使用中,我发现:

while (expression):
// do stuff
endwhile;

将PHP代码嵌入HTML中,对设计师来说更易读。例如:

<? while ($cssClass = array_pop($array)): ?>
   <li class="<?=$cssClass?>">
<? endwhile; ?>

考虑到:

while {

}

在 PHP 代码块内更易读。


您甚至可以在{}括号中添加纯HTML,例如while{ ?> 您惊人的HTML <?php } ... 但正如已经提到的那样,这会使代码更难以阅读... - jave.web

7

没有区别,这取决于个人偏好。


3

当代码实际运行时,差异微不足道,但在编码时,我发现键入括号更快(1):更常规(2):减少出错的机会(endwhile anyone?)。

作为奖励,我使用的编辑器自动格式化while循环(默认情况下使用括号),并且在以后,如果有任何问题,内置的括号匹配功能将捕获它。


2
写代码时实际上没有真正的区别。
在非常特殊的情况下,可能会存在方便程度上的差异。例如,假设你正在编写一个模板引擎,将模板代码转换为本机PHP代码,然后缓存并直接执行以提高速度。
在这种情况下,使用while...endwhile;避免使用大括号的事实,如果它识别到应该用{$var}这样的语法替换变量,也使用大括号,那么可以简化解析算法。
当然,在真正特殊的情况下,这只是一个非常小的好处,但你需要尽力而为。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接