2010-09-07 40 views
120

elseifelse if完全是同義詞,還是有區別?「elseif」和「else if」是否完全同義?

Zend是否有一個可接受的標準?

儘管我個人不喜歡在代碼中看到elseif,但我只需要知道它們是否是同義詞,並且PHP手冊不是最容易搜索的。

+10

順便說一下,並非所有其他語言都使用else if。例如,VB也使用'ElseIf',Ruby使用'elsif'。 – 2010-09-07 20:37:53

+6

和shell/bash使用elif – knittl 2010-09-07 20:40:08

+7

python也使用elif – gregghz 2011-09-09 16:37:52

回答

156

PHP manual

在PHP中,你也可以寫成「else if」(兩個單詞),所以行爲等同於「ELSEIF」的一個(一個字)。句法意義略有不同(如果您熟悉C,這是相同的行爲),但底線是兩者會導致完全相同的行爲。

本質上講,他們的行爲是相同的,但else if在技術上相當於一個嵌套的結構,像這樣:

if (first_condition) 
{ 

} 
else 
{ 
    if (second_condition) 
    { 

    } 
} 

該手冊還指出:

注意ELSEIF和否則,如果只有在使用大括號時纔會被視爲完全相同,如上例所示。當使用冒號定義if/elseif條件時,如果分成兩個單詞,則不得將其他單獨分隔,否則PHP將失敗,並出現分析錯誤。

這意味着在正常的控制結構的形式(即,使用括號):

if (first_condition) 
{ 

} 
elseif (second_condition) 
{ 

} 

要麼elseifelse if都可以使用。但是,如果使用alternate syntax,你必須使用elseif

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

使用示例代碼片段很好。如果有的話,替代語法就是證明PHP簡單地將else if作爲else {if {'。 – BoltClock 2010-09-07 20:36:25

+0

+1爲「否則如果在技術上等同於嵌套結構」 – 2014-07-18 06:10:02

+1

PHP不會將'else if'當作其他if {if,否則你將不能'if(0){} else if (0){} else {}'... – 2015-07-10 14:05:57

36

框架協同工作組(圖),這是由成員,其中包括Zend公司(https://github.com/php-fig/fig-standards#voting-members)的開發者,彙集了一系列標準的建議(PSR-#)。

Zend2和Symfony2已經遵循PSR-0。

風格沒有硬性規定,但您可以嘗試儘可能多地遵循PSR-2。

有上的其他評論如果VS ELSEIF在PSR-2:

如果讓所有的 控制關鍵字看起來像單個的詞ELSEIF應該被用來代替其他的關鍵字。

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

一些建議只是,建議。這取決於你是否使用else if或elseif

+4

非常感謝您指出關鍵字一字一的指引。 – 2012-12-14 17:20:20