Heim >Backend-Entwicklung >PHP-Tutorial >Nutzt PHP die Kurzschlussauswertung in logischen Ausdrücken?

Nutzt PHP die Kurzschlussauswertung in logischen Ausdrücken?

Susan Sarandon
Susan SarandonOriginal
2024-12-08 16:37:09572Durchsuche

Does PHP Utilize Short-Circuit Evaluation in Logical Expressions?

Kurzschlussauswertung in PHP

Dieser Codeausschnitt demonstriert eine PHP-If-Anweisung mit mehreren Bedingungen, die durch den logischen AND-Operator (&&) verbunden sind :

if (is_valid($string) && up_to_length($string) && file_exists($file)) 
{
    ......
}

Führt zu einem Kurzschluss von PHP Auswertung?

Ja, PHP implementiert eine Kurzschlussauswertung für logische Operatoren wie && (AND) und || (ODER). Das bedeutet, dass der Interpreter Bedingungen von links nach rechts auswertet. Wenn das Ergebnis der ersten Bedingung ausreicht, um das Ergebnis des gesamten Ausdrucks zu bestimmen, werden die übrigen Bedingungen nicht ausgewertet.

Wie PHP implementiert wird Kurzschlussauswertung

Am Beispiel des &&-Operators:

  1. Der Interpreter wertet die erste Bedingung aus, is_valid($string).
  2. Wenn is_valid($string) false zurückgibt, wird der Ausdruck automatisch als false ausgewertet, unabhängig von den anderen Bedingungen.
  3. Wenn is_valid($string) true zurückgibt, Der Interpreter wertet weiterhin die zweite Bedingung aus, up_to_length($string).
  4. Nur ​​wenn sowohl is_valid($string) als auch up_to_length($string) gibt true zurück, fährt der Interpreter mit der Auswertung von file_exists($file) fort.

Warum PHP die Kurzschlussauswertung verwendet

Kurzschluss Die Auswertung trägt zur Optimierung der Codeleistung bei, indem unnötige Vergleiche reduziert werden. Wenn beispielsweise is_valid($string) im bereitgestellten Beispiel „false“ zurückgibt, müssen die übrigen Bedingungen nicht überprüft werden, da der Gesamtausdruck bereits „false“ ist.

Beispieldemonstration

Um die Kurzschlussauswertung in Aktion zu veranschaulichen:

function saySomething()
{
    echo 'hi!';
    return true;
}

if (false && saySomething())
{
    echo 'statement evaluated to true';
}

Die Ausgabe lautet „Hallo!“ obwohl die zweite Bedingung in der if-Anweisung nie ausgewertet wird. Dies liegt daran, dass

zuerst ausgewertet wird und der gesamte Ausdruck falsch ist, da er „false“ zurückgibt.

Das obige ist der detaillierte Inhalt vonNutzt PHP die Kurzschlussauswertung in logischen Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn