2010-09-07 9 views
120

Sont également elseif et else if, ou y a-t-il une différence?Sont "elseif" et "else if" complètement?

Est-ce que Zend a un "standard" accepté sur lequel utiliser?

Bien que je n'aime pas voir elseif dans le code, j'ai juste besoin de savoir si elles sont aussi et le manuel PHP n'est pas le plus facile à rechercher.

+10

Toutes les autres langues n'utilisent pas 'else if ', d'ailleurs. Par exemple, VB utilise également 'ElseIf' et Ruby utilise' elsif'. –

+6

et shell/bash utilise elif – knittl

+7

python utilise également elif – gregghz

Répondre

156

De l'PHP manual:

En PHP, vous pouvez aussi écrire « else if » (en deux mots) et le comportement serait identique à celui de « elseif » (en un seul mot). La signification syntaxique est légèrement différente (si vous êtes familier avec C, c'est le même comportement) mais l'essentiel est que les deux auraient exactement le même comportement.

Essentiellement, ils se comporteront les mêmes, mais else if est techniquement équivalent à une structure imbriquée comme ceci:

if (first_condition) 
{ 

} 
else 
{ 
    if (second_condition) 
    { 

    } 
} 

Le manuel note également:

Notez que elseif et else if ne sera considéré exactement pareil qu'en utilisant des accolades comme dans l'exemple ci-dessus. Lorsque vous utilisez un deux-points pour définir vos conditions if/elseif, vous ne devez pas séparer else if en deux mots, sinon PHP échouera avec une erreur d'analyse.

Ce qui signifie que, dans la forme de structure de commande normale (à savoir en utilisant des accolades.):

if (first_condition) 
{ 

} 
elseif (second_condition) 
{ 

} 

soit elseif ou else if peuvent être utilisés. Toutefois, si vous utilisez le alternate syntax, vous devez utiliser elseif:

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

Bon travail avec les exemples de snippets. Si quoi que ce soit, la syntaxe alternative est tout ce qui est nécessaire pour prouver que PHP traite simplement 'else if' comme' else {if {'. – BoltClock

+0

+1 pour "else si est techniquement équivalent à une structure imbriquée" –

+1

PHP ne traite pas 'else if' comme' else {if {', sinon vous ne pourriez pas faire' if (0) {} else si (0) {} else {} '... –

36

Le Groupe interopérabilité cadre (figure) qui est composé de membres qui incluent les développeurs de Zend (https://github.com/php-fig/fig-standards#voting-members), mis en place une série de recommandations standard (PSR- #).

Zend2 et Symfony2 suivent déjà PSR-0.

Il n'y a pas de règles strictes pour les styles, mais vous pouvez essayer de suivre autant que possible le PSR-2.

Il y a un commentaire sur autre si vs elseif dans PSR-2:

Le mot-clé elseif DEVRAIENT être utilisé au lieu d'autre si pour que tous les mots-clés de contrôle ressemblent à des mots simples.

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

Certaines des recommandations ne sont que des recommandations. C'est à vous de décider si vous voulez ou non

+4

Merci beaucoup d'avoir souligné les mots-clés en un seul mot. –