Gibt elseif und else if auch ganz, oder gibt es da einen unterschied?
Hat Zend einen akzeptierten „Standard“, den man verwenden kann?
Während ich persönlich nicht gerne sehe elseif im Code, ich muss nur wissen, ob sie synonym sind und das PHP-Handbuch ist nicht am einfachsten zu durchsuchen.
Nicht jede andere Sprache verwendet else if, übrigens. Zum Beispiel verwendet VB auch ElseIf und Ruby verwendet elsif.
In PHP können Sie auch ‘else if’ (in zwei Wörtern) schreiben und das Verhalten wäre identisch mit dem von ‘elseif’ (in einem einzigen Wort). Die syntaktische Bedeutung ist etwas anders (wenn Sie mit C vertraut sind, ist dies dasselbe Verhalten), aber unterm Strich würden beide zu genau demselben Verhalten führen.
Im Wesentlichen werden sie sich gleich verhalten, aber else if ist technisch äquivalent zu einer verschachtelten Struktur wie folgt:
if (first_condition)
{
}
else
{
if (second_condition)
{
}
}
Das Handbuch weist außerdem darauf hin:
Beachten Sie, dass elseif und else if nur dann als genau gleich betrachtet werden, wenn geschweifte Klammern wie im obigen Beispiel verwendet werden. Wenn Sie einen Doppelpunkt verwenden, um Ihre if/elseif-Bedingungen zu definieren, dürfen Sie else if nicht in zwei Wörter trennen, sonst schlägt PHP mit einem Parsing-Fehler fehl.
Was bedeutet, dass in der normalen Form der Kontrollstruktur (d. h. mit geschweiften Klammern):
if (first_condition)
{
}
elseif (second_condition)
{
}
entweder elseif oder else if kann verwendet werden. Wenn Sie jedoch die verwenden alternative SyntaxSie müssen verwenden elseif:
if (first_condition):
// ...
elseif (second_condition):
// ...
endif;
Gute Arbeit mit den Beispielschnipseln. Wenn überhaupt, ist die alternative Syntax alles, was notwendig ist, um zu beweisen, dass PHP einfach behandelt else if wie else { if {.
– BoltClock
7. September 2010 um 20:36 Uhr
PHP behandelt nicht else if wie else { if {sonst könnten Sie das nicht tun if (0) { } else if (0) { } else { }…
– Guido Hendriks
10. Juli 2015 um 14:05 Uhr
@GuidoHendriks: Es ist nicht so, dass das eine wie das andere behandelt wird, sondern dass sie funktional gleichwertig sind. Ihr Beispiel entspricht dem verschachtelten Formular if (0) { } else { if (0) { } else { } }. Beachten Sie, dass es im letzten keine Mehrdeutigkeit gibt else Block, was bei kompletten Zweigen immer der Fall ist (jeder if hat ein else).
Mit alternativem Synyax müssen Sie sich nur ‘Doppelpunkt’ und Endif von inner merken, wenn:if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; ist das Äquivalent von; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
– DDS
21. August 2019 um 15:27 Uhr
James Cowen
Die Framework Interoperability Group (FIG), die sich aus Mitgliedern zusammensetzt, zu denen die Entwickler von Zend ( https://github.com/php-fig/fig-standards#voting-members ) eine Reihe von Standardempfehlungen (PSR-#) zusammengestellt.
Zend2 und Symfony2 folgen bereits PSR-0.
Es gibt keine festen Regeln für Stile, aber Sie können versuchen, so viel wie möglich von PSR-2 zu befolgen.
Es gibt einen Kommentar zu else if vs elseif in PSR-2:
Das Schlüsselwort elseif SOLLTE anstelle von else if verwendet werden, damit alle Steuerschlüsselwörter wie einzelne Wörter aussehen.
Nicht jede andere Sprache verwendet
else if
, übrigens. Zum Beispiel verwendet VB auchElseIf
und Ruby verwendetelsif
.– Daniel Vandersluis
7. September 2010 um 20:37 Uhr
und Shell/Bash verwendet elif
– Strickl
7. September 2010 um 20:40 Uhr
Python verwendet auch Elif
– greggz
9. September 2011 um 16:37 Uhr