Maison  >  Article  >  développement back-end  >  Pourquoi \"sum: \" . $a $b Sortie 2 en PHP ?

Pourquoi \"sum: \" . $a $b Sortie 2 en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 01:58:02403parcourir

Why Does

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!

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