20

我查看了许多代码片段,发现人们可以在if语句中使用以下两种方法:

方法一:

<?php
  if ($condition) {
    // Do this
  }
?>

方法二:

<?php
  if ($condition):
    // Do this
  endif;
?>

那么哪种方法与PHP编译器和PHP版本更兼容,或者两者之间没有明显区别?

4

5 回答 5

25

大多数情况下,视图脚本中使用替代 (endif) 语法。通常很难看到/注意到 if 语句的结尾,因为花括号只占用一个字符,当您位于文件的底部时,很难判断它是 if 还是 foreach 的结尾。例如:

<?php if ($condition): ?>

    <div>a huge block of html</div>

<?php endif; ?>
于 2012-05-03T06:02:47.517 回答
6

它们都是完全等价的。请查阅您所在组织的样式指南以确定您应该使用哪一个。

于 2012-05-03T05:48:40.170 回答
4

这种替代语法与可能更熟悉的语法没有任何不同。只是不要将两者混为一谈。while, for,foreach和存在类似的语法switch

通常,您应该根据可读性和您的团队偏好选择您喜欢的语法。

当您开始看到滥用逻辑合取运算符的“if 语句”时,真正可能让您感到震惊的是,如下所示:

isset( $value ) AND print( $value );
于 2012-05-03T05:48:26.370 回答
0

正如我到目前为止所看到的,在我的应用程序中,它们之间没有区别,但是如果你在没有规则的情况下混合它们,你可能会遇到很多问题,因为可能会出现一些错误并且你会搜索一个卷曲的但你没有用过卷曲。选择一种语法并独占使用。

于 2017-06-20T18:25:02.200 回答
0

唯一的区别出现在非常大的文档和项目中。我的公司使用大括号而不是 endif、endelse ......因为我们从事非常大的项目。当您比较文件大小时,使用大括号是有好处的。较小的文件加载速度更快,因此我们努力减少每个字节。我们注释掉最后的大括号,以便在测试时更容易识别,然后删除所有用于生产的注释。

于 2017-11-28T13:37:47.873 回答