186 votes

Les expressions "elseif" et "else if" sont-elles totalement synonymes ?

Son elseif et else if sont-ils totalement synonymes ou existe-t-il une différence ?

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

Bien que je n'apprécie pas personnellement de voir elseif dans le code, j'ai juste besoin de savoir s'ils sont synonymes et le manuel de PHP n'est pas le plus facile à consulter.

11 votes

Toutes les autres langues n'utilisent pas else if En passant, je vous signale qu'il n'y a pas d'autre solution que de faire appel à l'aide. Par exemple, VB utilise également ElseIf et Ruby utilise elsif .

7 votes

Et shell/bash utilise elif

8 votes

Python utilise également elif

232voto

Daniel Vandersluis Points 30498

A partir de la Manuel PHP :

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

Pour l'essentiel, ils se comportent de la même manière, mais else if est techniquement équivalent à une structure imbriquée comme celle-ci :

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

Le manuel indique également

Notez que elseif et else if ne sont considérés comme identiques que lorsqu'ils sont utilisés entre crochets, comme dans l'exemple ci-dessus. Lorsque vous utilisez les deux points pour définir vos conditions if/elseif, vous ne devez pas séparer else if en deux mots, ou PHP vous enverra une erreur d'analyse.

Ce qui signifie que dans la forme normale de la structure de contrôle (c'est-à-dire en utilisant des accolades) :

if (first_condition)
{

}
elseif (second_condition)
{

}

soit elseif o else if peut être utilisé. Cependant, si vous utilisez le syntaxe alternative vous devez utiliser elseif :

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

18 votes

Bon travail avec les exemples de snippets. En fait, la syntaxe alternative est tout ce qui est nécessaire pour prouver que PHP traite tout simplement else if comme else { if { .

2 votes

PHP ne traite pas les else if comme else { if { sinon vous ne pourriez pas faire if (0) { } else if (0) { } else { } ...

4 votes

@GuidoHendriks : ce n'est pas que l'un est traité comme l'autre, c'est qu'ils sont fonctionnellement équivalents. Votre exemple est équivalent à la forme imbriquée if (0) { } else { if (0) { } else { } } . Notez qu'il n'y a pas d'ambiguïté dans le dernier else bloc, ce qui est toujours le cas pour les branches complètes (chaque if dispose d'un else ).

50voto

James Cowhen Points 409

Le Framework Interoperability Group (FIG), qui est composé de membres comprenant 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à la PSR-0.

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

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

Le mot-clé elseif DEVRAIT être utilisé à la place de else if afin que tous les aient l'air d'un seul mot.

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

Certaines recommandations ne sont que des recommandations. Il vous appartient d'utiliser ou non else if ou elseif.

5 votes

Merci beaucoup d'avoir souligné la nécessité d'utiliser un seul mot pour les mots-clés.

0 votes

La recommandation implique donc que else if est un mot-clé de contrôle unique qui se trouve être regarder comme des mots multiples.

0voto

Shakti Points 1

Oui, "elseif" et "else if" sont tous deux synonymes, c'est-à-dire qu'ils ont le même sens et la même signification. Vous pouvez mélanger "else if" et "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){
    ...
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X