Frage PHP Lazy Boolesche Auswertung


Ich habe eine bedingte Aussage so:

if($boolean && expensiveOperation()){ ...}

Hat PHP eine faule boolesche Auswertung, d. H. Wird es überprüft? $boolean und wenn es falsch ist, nicht die teure Operation durchführen? Wenn ja, in welcher Reihenfolge sollte ich meine Variablen angeben?


21
2017-11-18 15:53


Ursprung


Antworten:


Ja tut es. Es nennt sich Kurzschlussauswertung. Siehe die Kommentare zum Dokumentationsseite...

Wie für den Auftrag führt es die Prüfungen basierend auf aus Betreiber Vorrang und dann von links nach rechts. Damit:

A || B || C

Will zuerst A auswerten, dann B nur, wenn A falsch ist, und C nur, wenn sowohl A als auch B falsch sind ...

Aber

A AND B || C

Wird immer ausgewertet B || C, schon seit || hat eine höhere Priorität als AND (nicht wahr für &&).


24
2017-11-18 15:57



Ja, PHP tut es Kurzschlussauswertung.


7
2017-11-18 15:58



PHP hat eine Kurzschlussauswertung. Ihr Beispiel wäre der richtige Gebrauch davon:

http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages


3
2017-11-18 15:58