Maison >développement back-end >tutoriel php >Pourquoi \'sum: \' . $a $b Sortie 2 en PHP ?
Opérateurs conflictuels de PHP : addition et concaténation
En PHP, un phénomène intrigant survient lorsque l'on tente de combiner des opérations d'addition et de concaténation. Explorons ce curieux comportement à l'aide d'un exemple :
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);</code>
Évidemment, la deuxième ligne affiche "sum : 3". Cependant, la première ligne affiche de manière inattendue « 2 » au lieu de « somme : 2 ». Pourquoi cela se produit-il ?
Opérateurs associatifs de gauche avec la même priorité
La clé réside dans la priorité et l'associativité des opérateurs en PHP. Les opérateurs d’addition ( ) et de concaténation (.) partagent la même priorité. Par conséquent, ils sont évalués de gauche à droite.
Dans la première ligne de notre code, l'opérateur de concaténation (.) vient en premier :
<code class="php">"sum: " . $a + $b</code>
Ce résultat est ensuite ajouté à $b . Donc, ce que nous avons est :
<code class="php">echo "sum: 1" + 2;</code>
Puisqu'il s'agit d'un contexte numérique, "somme : 1" est converti en un entier. Cela nous laisse 0 2, ce qui donne 2.
Lorsque des parenthèses sont introduites dans la deuxième ligne, l'opérateur d'addition est prioritaire. Il évalue d'abord l'expression entre parenthèses, ce qui donne 3, qui est ensuite concaténé avec "sum : " pour produire le résultat correct : "sum : 3."
Documentation des bizarreries des opérateurs PHP
Ce comportement particulier est indiqué explicitement dans la documentation PHP pour les opérateurs de concaténation et arithmétiques, soulignant l'importance de l'associativité lorsqu'il s'agit d'opérateurs de même priorité. Il est crucial que les développeurs PHP soient conscients de ces nuances pour éviter toute confusion potentielle dans leur code.
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!