我何时使用if/endif与If {}?

Nea*_*eal 10 php if-statement

那么问题就是自我解释.

在PHP中何时使用if/endif符号而不是标准if(something){}符号?

例:

<?php if($a == 5): ?>
A is equal to 5
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

与:

<?php if($a == 5){ ?>
A is equal to 5
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

edo*_*ian 15

简短回答:

总是使用 if($something) { },几乎从不使用 if/endif.它是PHP 4.0.0以来的标准,虽然旧的语法不会消失,但这是每个人都期望的.

如果你真的在寻找一个可以使用if/endif的情况,那么当使用php作为模板语言时就是这样.

有些人喜欢这样的东西:

<?php if ($foo): ?>
Hi There
<?php else: ?>
cya!
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

比...更好

<?php if ($foo) { ?>
Hi There
<?php } else { ?>
cya!
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

和imho这是因为每一行"说话",当php标签之间有很多html时,这可能会有所帮助.


lon*_*day 15

其他人给出了"模板化"的答案,但没有真正解释原因.花括号非常适合表示块,但它们依赖于缩进来清晰地读取.所以这很清楚:

<?php
if (1 == 2)
{
    while (1 < 2)
    {
        doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

很明显哪个支撑匹配哪个.

但是,如果你进入HTML块,你可能会完全停止缩进.例如:

<?php
if (1 != 2) { ?>
<div>This always happens! <?php while (true) { ?>
  <p>This is going to cause an infinite loop!</p>
<?php }
}
Run Code Online (Sandbox Code Playgroud)

这很难理解.如果您使用该endif样式,它看起来更清洁:

<?php
if (1 != 2): ?>
<div>This always happens! <?php while (true): ?>
  <p>This is going to cause an infinite loop!</p>
<?php endwhile;
endif;
Run Code Online (Sandbox Code Playgroud)

代码的内容更清楚地显示了正在做的事情.对于这种有限的情况,它更清晰.