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!