"elseif"和"else if"完全是同义词吗?

The*_*ith 157 php syntax conditional-statements

elseifelse if完全的代名词,或者是有区别吗?

Zend是否有一个可以使用的"标准"?

虽然我个人不喜欢elseif在代码中看到,但我只需要知道它们是否是同义词而且PHP手册不是最容易搜索的.

Dan*_*uis 204

PHP手册:

在PHP中,您还可以编写'else if'(两个单词),其行为与'elseif'(单个单词)中的行为相同.句法意义略有不同(如果你熟悉C,这是相同的行为),但底线是两者都会导致完全相同的行为.

从本质上讲,它们的行为相同,但else if在技​​术上等同于嵌套结构,如下所示:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}
Run Code Online (Sandbox Code Playgroud)

该手册还指出:

注意elseif和else if在使用花括号时只会被认为完全相同,如上例所示.使用冒号来定义if/elseif条件时,如果是两个单词,则不能将else分开,否则PHP将因解析错误而失败.

这意味着在正常的控制结构形式(即使用大括号):

if (first_condition)
{

}
elseif (second_condition)
{

}
Run Code Online (Sandbox Code Playgroud)

任一elseifelse if都可以使用.但是,如果使用备用语法,则必须使用elseif:

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;
Run Code Online (Sandbox Code Playgroud)

  • 示例片段做得很好.如果有的话,替代语法就是证明PHP只是将`else if`视为`else {if {`. (16认同)
  • @GuidoHendriks:不是那个被视为另一个,而是它们在功能上是等同的.你的例子等同于嵌套形式`if(0){} else {if(0){} else {}}`.注意在最后的`else`块中没有歧义,对于完整的分支总是这样(每个`if`都有一个'else`). (4认同)
  • +1表示“否则在技术上等同于嵌套结构” (3认同)
  • PHP不会将`else if`视为`else {if {`,否则你不能做`if(0){} else if(0){} else {}`... (2认同)

Jam*_*hen 45

框架互操作性组(FIG)由包含Zend开发人员(https://github.com/php-fig/fig-standards#voting-members)的成员组成,汇集了一系列标准建议(PSR) - #).

Zend2和Symfony2已经跟随PSR-0.

风格没有严格的规则,但你可以尝试尽可能多地遵循PSR-2.

如果在PSR-2中vs elseif,则对else有评论:

如果所有控制关键字看起来像单个单词,则应该使用关键字elseif而不是else.

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#51-if-elseif-else

一些建议只是建议.是否使用else if或elseif取决于你

  • 非常感谢你指出关键词作为单词指南. (4认同)