Why Does \'sum: \' . $a $b Output 2 in PHP?

Patricia Arquette
Release: 2024-10-30 01:58:02
Original
400 people have browsed it

Why Does

PHP's Conflicting Operators: Addition and Concatenation

In PHP, an intriguing phenomenon arises when attempting to combine addition and concatenation operations. Let's explore this curious behavior using an example:

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

echo "sum: " . $a + $b;
echo "sum: " . ($a + $b);</code>
Copy after login

Expectedly, the second line prints "sum: 3." However, the first line unexpectedly displays "2" instead of "sum: 2." Why does this occur?

Left Associative Operators with Same Precedence

The key lies in the operator precedence and associativity in PHP. Both addition ( ) and concatenation (.) operators share the same precedence. Consequently, they are evaluated from left to right.

In the first line of our code, the concatenation (.) operator comes first:

<code class="php">"sum: " . $a + $b</code>
Copy after login

This result is then added to $b. So, what we have is:

<code class="php">echo "sum: 1" + 2;</code>
Copy after login

Since this is a numeric context, "sum: 1" is converted to an integer. This leaves us with 0 2, resulting in 2.

When parentheses are introduced in the second line, the addition operator takes precedence. It evaluates the expression within parentheses first, resulting in 3, which is then concatenated with "sum: " to produce the correct output: "sum: 3."

Documenting PHP's Operator Quirks

This peculiar behavior is stated explicitly in the PHP documentation for concatenation and arithmetic operators, emphasizing the significance of associativity when dealing with operators of the same precedence. It's crucial for PHP developers to be aware of these nuances to avoid potential confusion in their code.

The above is the detailed content of Why Does \'sum: \' . $a $b Output 2 in PHP?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!