【问题标题】:Are "elseif" and "else if" completely synonymous?“elseif”和“else if”完全是同义词吗?
【发布时间】:2011-04-09 09:51:49
【问题描述】:

elseifelse if 完全是同义词,还是有区别?

Zend 有公认的“标准”吗?

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

【问题讨论】:

  • 顺便说一句,并非所有其他语言都使用else if。例如,VB 也使用ElseIf,而Ruby 使用elsif
  • 和 shell/bash 使用 elif
  • python也使用elif

标签: php syntax conditional-statements


【解决方案1】:

来自PHP manual

在 PHP 中,您还可以编写“else if”(用两个词),其行为与“elseif”(用一个词)的行为相同。语法含义略有不同(如果您熟悉 C,这是相同的行为),但底线是两者都会导致完全相同的行为。

本质上,它们的行为相同,但else if 在技术上等同于这样的嵌套结构:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

手册还注明:

请注意,elseif 和 else if 只有在使用大括号时才会被视为完全相同,如上例所示。当使用冒号定义 if/elseif 条件时,不能将 else if 分成两个单词,否则 PHP 将失败并出现解析错误。

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

if (first_condition)
{

}
elseif (second_condition)
{

}

可以使用elseifelse if。但是,如果您使用alternate syntax,则必须使用elseif

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;

【讨论】:

  • sn-ps 示例做得很好。如果有的话,替代语法就是证明 PHP 简单地将 else if 视为 else { if { 所必需的全部。
  • PHP 不会将else if 视为else { if {,否则您将无法做到if (0) { } else if (0) { } else { }...
  • @GuidoHendriks:并不是将一个视为另一个,而是它们在功能上是等效的。您的示例等效于嵌套形式if (0) { } else { if (0) { } else { } }。请注意,最后一个 else 块中没有歧义,完整的分支总是如此(每个 if 都有一个 else)。
  • 使用替代语法你只需要记住'冒号'和内部 if:if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; 的 endif 相当于; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
【解决方案2】:

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

Zend2 和 Symfony2 已经遵循 PSR-0。

样式没有硬性规定,但您可以尝试尽可能多地遵循 PSR-2。

在 PSR-2 中有一条 else if vs elseif 的注释:

应该使用关键字 elseif 而不是 else if 这样所有 控制关键字看起来像单个单词。

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

有些建议就是这样,建议。使用 else if 还是 elseif 由你决定

【讨论】:

  • 非常感谢您指出关键字作为一个单词的指南。
  • 因此建议暗示else if 是一个控制关键字,恰好看起来 像多个单词。
【解决方案3】:

是的,“elseif”和“else if”都是同义词,意义和意义都相同。您可以将“else if”与“elseif”混合在一起。

For Example - We can use "else if" and "elseif" together.
if($condition){
  ...
}
else if($condition){
  ...
}
elseif($condition){
  ...
}

Nested:
if($condition){
  ...
}
else if($condition){
  if($condition){
    ...
  }
  elseif($condition){
    ...
  }
}

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2010-10-12
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多