Czy „elseif” i „else if” są całkowicie synonimami?

170

elseifi są else ifcałkowicie synonimami, czy też jest różnica?

Czy Zend ma przyjęty „standard”, na którym należy go używać?

Chociaż osobiście nie lubię widzieć elseifw kodzie, po prostu muszę wiedzieć, czy są synonimami, a podręcznik PHP nie jest najłatwiejszy do wyszukania.

Theodore R. Smith
źródło
10
Nawiasem else ifmówiąc, nie w każdym innym języku . Na przykład VB również używa, ElseIfa Ruby używa elsif.
Daniel Vandersluis,
6
a shell / bash używa elif
knittl
7
python używa również elif
gregghz

Odpowiedzi:

218

Z podręcznika PHP :

W PHP możesz również napisać „else if” (w dwóch słowach), a zachowanie byłoby identyczne jak w przypadku „elseif” (jednym słowem). Znaczenie składniowe jest nieco inne (jeśli znasz C, jest to takie samo zachowanie), ale najważniejsze jest to, że oba skutkują dokładnie takim samym zachowaniem.

Zasadniczo zachowują się tak samo, ale else iftechnicznie są równoważne zagnieżdżonej strukturze, takiej jak ta:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

W instrukcji podano również:

Zwróć uwagę, że elseif i else if będą traktowane dokładnie tak samo, jak w przypadku używania nawiasów klamrowych, jak w powyższym przykładzie. Kiedy używasz dwukropka do zdefiniowania warunków if / elseif, nie możesz rozdzielać else if na dwa słowa, w przeciwnym razie PHP zakończy się niepowodzeniem z błędem analizy.

Co oznacza, że ​​w normalnej postaci struktury kontrolnej (tj. Przy użyciu nawiasów):

if (first_condition)
{

}
elseif (second_condition)
{

}

albo elseiflub else ifmogą być użyte. Jeśli jednak używasz alternatywnej składni , musisz użyć elseif:

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;
Daniel Vandersluis
źródło
18
Dobra robota z przykładowymi fragmentami. Jeśli już, alternatywna składnia jest wszystkim, czego potrzeba, aby udowodnić, że PHP traktuje po prostu else ifjako else { if {.
BoltClock
2
PHP nie traktuje else iftak else { if {, inaczej nie dałbyś rady if (0) { } else if (0) { } else { }...
Guido Hendriks
4
@GuidoHendriks: nie chodzi o to, że jeden jest traktowany jako drugi, chodzi o to, że są one równoważne funkcjonalnie. Twój przykład jest odpowiednikiem zagnieżdżonego formularza if (0) { } else { if (0) { } else { } }. Zauważ, że w ostatnim elsebloku nie ma niejednoznaczności , co zawsze ma miejsce w przypadku pełnych gałęzi (każdy ifma else).
wyjazd
Oto kolejny przykład odniesienia php.net/manual/en/control-structures.elseif.php#115851
WhyAyala
Przy alternatywnym synyaksie musisz po prostu zapamiętać „dwukropek” i końcówkę wewnętrznego, jeśli: if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; jest odpowiednikiem; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS
47

Grupa Framework Interoperability Group (FIG), która składa się z członków, w tym twórców Zend ( https://github.com/php-fig/fig-standards#voting-members ), przygotowała szereg standardowych zaleceń (PSR - #).

Zend2 i Symfony2 są już po PSR-0.

Nie ma sztywnych i szybkich zasad dotyczących stylów, ale możesz spróbować przestrzegać tak dużo PSR-2, jak tylko możesz.

Jest komentarz else if vs elseif w PSR-2:

Słowo kluczowe elseif POWINNO być używane zamiast else, jeśli tak, aby wszystkie słowa kluczowe sterujące wyglądały jak pojedyncze słowa.

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

Niektóre z zaleceń są po prostu zaleceniami. Od Ciebie zależy, czy użyjesz else if czy elseif

James Cowhen
źródło
4
Bardzo dziękuję za wskazanie wskazówek dotyczących słów kluczowych jako jednego słowa.
Theodore R. Smith