是elseif
和else if
完全同义词,还是有区别?
Zend在使用哪个标准上是否有公认的“标准”?
虽然我个人不喜欢elseif
在代码中看到代码,但我只需要知道它们是否是同义词,并且PHP手册并不是最容易搜索的。
是elseif
和else if
完全同义词,还是有区别?
Zend在使用哪个标准上是否有公认的“标准”?
虽然我个人不喜欢elseif
在代码中看到代码,但我只需要知道它们是否是同义词,并且PHP手册并不是最容易搜索的。
Answers:
从PHP手册:
在PHP中,您还可以编写“ else if”(用两个词表示),其行为与“ elseif”之一(用一个词表示)相同。语法含义略有不同(如果您熟悉C,这是相同的行为),但最重要的是,两者都将导致完全相同的行为。
从本质上讲,它们的行为相同,但是else if
从技术上讲,它等效于嵌套结构,如下所示:
if (first_condition)
{
}
else
{
if (second_condition)
{
}
}
该手册还指出:
请注意,如上例所示,使用大括号时,elseif和else if仅被视为完全相同。使用冒号定义if / elseif条件时,请勿将else分隔为两个单词,否则PHP会因解析错误而失败。
这意味着在正常控制结构形式中(即使用花括号):
if (first_condition)
{
}
elseif (second_condition)
{
}
任一elseif
或else if
都可以使用。但是,如果使用备用语法,则必须使用elseif
:
if (first_condition):
// ...
elseif (second_condition):
// ...
endif;
else if
视为else { if {
。
else if
视为else { if {
,否则您将无法做if (0) { } else if (0) { } else { }
...
if (0) { } else { if (0) { } else { } }
。请注意,在最后一个else
块中没有歧义,对于完整分支,情况总是如此(每个if
都有else
)。
if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif;
是的同等学历; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
由包括Zend开发人员在内的成员组成的框架互操作性小组(FIG)(https://github.com/php-fig/fig-standards#voting-members)组成了一系列标准建议(PSR) -#)。
Zend2和Symfony2已经遵循PSR-0。
样式没有严格的规定,但是您可以尝试并遵循尽可能多的PSR-2。
在PSR-2中对else if vs elseif进行了评论:
应该使用关键字elseif代替else if,以便所有控制关键字看起来像单个单词。
其中一些建议就是这些建议。是否使用else if或elseif由您决定
else if
顺便说一下,并非其他所有语言都使用。例如,VB也使用,ElseIf
而Ruby使用elsif
。