Maison >développement back-end >tutoriel php >PHP utilise-t-il l'évaluation par court-circuit dans les expressions logiques ?

PHP utilise-t-il l'évaluation par court-circuit dans les expressions logiques ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 16:37:09567parcourir

Does PHP Utilize Short-Circuit Evaluation in Logical Expressions?

Évaluation de court-circuit en PHP

Cet extrait de code démontre une instruction PHP if avec plusieurs conditions reliées par l'opérateur logique AND (&&) :

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

Est-ce que PHP court-circuite Évaluation ?

Oui, PHP implémente une évaluation de court-circuit pour les opérateurs logiques comme && (AND) et || (OU). Cela signifie que l'interpréteur évalue les conditions de gauche à droite, et si le résultat de la première condition est suffisant pour déterminer le résultat de l'expression entière, les conditions restantes ne sont pas évaluées.

Comment PHP implémente Évaluation de court-circuit

En utilisant l'opérateur && comme exemple :

  1. L'interprète évalue la première condition, is_valid($string).
  2. Si is_valid($string) renvoie false, l'expression est automatiquement évaluée à false, quelles que soient les autres conditions.
  3. Si is_valid($string) renvoie true, l'interpréteur continue d'évaluer la deuxième condition, up_to_length($string).
  4. Uniquement si is_valid($string) et up_to_length($string) renvoient true l'interprète procède-t-il à l'évaluation de file_exists($file).

Pourquoi PHP utilise l'évaluation de court-circuit

L'évaluation de court-circuit aide à optimiser les performances du code en réduisant comparaisons inutiles. Par exemple, dans l'exemple fourni, si is_valid($string) renvoie false, il n'est pas nécessaire de vérifier les conditions restantes, puisque l'expression globale est déjà fausse.

Exemple de démonstration

Pour illustrer l'évaluation d'un court-circuit en action :

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

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

La sortie sera "salut !" même si la deuxième condition de l'instruction if n'est jamais évaluée. En effet,

est évalué en premier, et comme il renvoie false, l'expression entière est fausse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn