Maison  >  Article  >  développement back-end  >  Pourquoi la concaténation et l'ajout de PHP conduisent-ils à des résultats inattendus ?

Pourquoi la concaténation et l'ajout de PHP conduisent-ils à des résultats inattendus ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 10:50:29432parcourir

Why Does PHP Concatenation and Addition Lead to Unexpected Results?

Dévoilement de l'ambiguïté de PHP : le cas curieux de la concaténation et de l'addition

La préséance et l'associativité des opérateurs de PHP peuvent conduire à des résultats inattendus lorsque l'addition et la concaténation les opérateurs sont impliqués. Considérez ce code :

<code class="php">$a = 1;
$b = 2;

echo "sum: " .  $a + $b; // Output: 2
echo "sum: " . ($a + $b); // Output: sum: 3</code>

Pourquoi cet écart ? Tout dépend de l'ordre d'évaluation des opérateurs PHP.

Les opérateurs d'addition ( ) et de concaténation (.) ont la même priorité, mais ils sont associatifs à gauche. Cela signifie que lorsque PHP rencontre une expression impliquant plusieurs opérateurs avec la même priorité, il évalue d'abord l'opérateur le plus à gauche et se dirige vers la droite.

Dans la première instruction echo, l'opérateur de concaténation (.) évalue en premier , ce qui donne ce qui suit :

"sum: 1" + 2

La chaîne "sum : 1" est ensuite convertie en une valeur numérique (0) et ajoutée à $b (2), donnant le résultat de 2.

Dans la deuxième instruction echo, les parenthèses forcent l'opérateur d'addition à évaluer en premier :

($a + $b) . "sum:"

Le résultat est ensuite concaténé avec la chaîne "sum:", produisant le résultat souhaité de "sum: 3 ".

Ce comportement est documenté dans la documentation PHP sur la priorité des opérateurs. Il indique que "Les opérateurs ayant la même priorité évaluent de gauche à droite, c'est-à-dire d'abord, puis ., puis -."

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