PHP运算符优先级和字符串连接?

Red*_*Red 5 php

请参阅以下代码段

$i=1;

echo $i.($i++);
Run Code Online (Sandbox Code Playgroud)

在一个快速,我认为结果将是,12但实际结果是21.

echo $i,$i++;
Run Code Online (Sandbox Code Playgroud)

我以为它会是12它的11.

echo ($i = ($i++)); //result is 1

echo ($i = ($i+1)); //result is 2
Run Code Online (Sandbox Code Playgroud)

但为什么?

Geo*_*ton 2

第一个例子

在本例中,首先评估括号中的代码($i++)。的值$i取 (1),然后变量增加到 2。这样就得到了这个,其中$i是 2。

echo $i . '1'
Run Code Online (Sandbox Code Playgroud)

由此,$i将 的值代入 ,得到'2' . '1',将其连接起来得到'21'

第二个例子

重写此代码以清除,分隔符会更容易。该行echo $i, $i++;相当于:

echo $i;
echo $i++;
Run Code Online (Sandbox Code Playgroud)

第一行显然输出1,第二行将输出相同的值,然后递增$i++后递增运算符)。echo $i;如果你在最后放另一个,它会输出2.