«Elseif» et «else if» sont-ils complètement synonymes?

170

Sont elseifet else ifcomplètement, ou y at -il une différence?

Zend a-t-il un "standard" accepté sur lequel utiliser?

Bien que personnellement je n'aime pas voir elseifdans le code, j'ai juste besoin de savoir s'ils sont également synonymes et le manuel PHP n'est pas le plus facile à rechercher.

Théodore R. Smith
la source
10
Au fait, toutes les autres langues n'utilisent else ifpas. Par exemple, VB utilise également ElseIfet Ruby utilise elsif.
Daniel Vandersluis
6
et shell / bash utilise elif
knittl
7
python utilise également elif
gregghz

Réponses:

218

Depuis le manuel PHP :

En PHP, vous pouvez également é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 conduiraient exactement au même comportement.

Essentiellement, ils se comporteront de la même manière, mais else ifest 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 seront considérés exactement de la même manière que lorsque vous utilisez des accolades comme dans l'exemple ci-dessus. Lorsque vous utilisez 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 contrôle normale (c'est-à-dire en utilisant des accolades):

if (first_condition)
{

}
elseif (second_condition)
{

}

soit elseifou else ifpeut être utilisé. Cependant, si vous utilisez la syntaxe alternative , vous devez utiliser elseif:

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;
Daniel Vandersluis
la source
18
Bon travail avec les extraits d'exemple. Si quoi que ce soit, la syntaxe alternative est tout ce qui est nécessaire pour prouver que PHP traite simplement else ifcomme else { if {.
BoltClock
2
PHP ne traite pas else ifcomme else { if {, sinon vous ne pourriez pas faire if (0) { } else if (0) { } else { }...
Guido Hendriks
4
@GuidoHendriks: ce n'est pas que l'un est traité comme l'autre, c'est qu'ils sont fonctionnellement équivalents. Votre exemple est équivalent au formulaire imbriqué if (0) { } else { if (0) { } else { } }. Notez qu'il n'y a pas d'ambiguïté dans le dernier elsebloc, ce qui est toujours le cas pour les branches complètes (chacune ifa un else).
Outis
Voici un autre exemple de référence php.net/manual/en/control-structures.elseif.php#115851
WhyAyala
Avec une synyaxe alternative, vous devez simplement vous souvenir de «deux-points» et de l'endif de inner si: if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; est l'équivalent de; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS
47

Le Framework Interoperability Group (FIG) qui est composé de membres dont les développeurs de Zend ( https://github.com/php-fig/fig-standards#voting-members ), a élaboré 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 de PSR-2 que vous le pouvez.

Il y a un commentaire sur else if vs elseif dans PSR-2:

Le mot-clé elseif DEVRAIT être utilisé à la place de else si ainsi tous les mots-clés de contrôle ressemblent à des mots uniques.

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 cela, des recommandations. C'est à vous de décider d'utiliser else if ou elseif

James Cowhen
la source
4
Merci beaucoup d'avoir indiqué le guide des mots-clés en un seul mot.
Theodore R. Smith