今天我注意到 php.ini 中有一个歧义。我运行了这段代码
$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6
让我们假设 的初始值$i is 5
。现在新值应该是 6 但实际上是5
。当我做同样的事情时,C++
我得到了6
预期的结果。是 php 中的一些错误多年来未被注意到还是其他原因。有人可以解释一下吗?
为什么你认为这个值应该是6?
$i
正在递增,将返回递增之前的值(因为您使用的是后递增运算符)并分配给$i
. 似乎合乎逻辑。
尝试
$i = ++$i;
你会得到正确的结果。
问题是,如果你这样做,$i = $i++
则$i
在语句之后递增,但你将它分配给另一侧的旧变量,所以它永远不会递增变量
查看递增/递减运算符的手册。你问的行为是正常的,只是违背了你作为 C++ 开发人员的直觉。
$i++首先返回 $i 的值,然后执行并递增,而 ++$i 在返回之前递增 $i。