今天我注意到了php的模糊性。我运行了这段代码
$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6
让我们假设$i is 5
的初始值。现在新值应该是6,但实际上它是5
。当我在C++
中做同样的事情时,我按预期得到了6
。
它是一些在PHP中被忽视了多年的错误还是其他一些东西。有人可以解释一下吗?
答案 0 :(得分:5)
为什么假设值应 6?
$i
正在递增,返回之前的值(因为您正在使用后增量运算符)并分配给{{1 }}。似乎合乎逻辑。
答案 1 :(得分:3)
尝试
$i = ++$i;
你会得到正确的结果。
问题在于,如果你执行$i = $i++
,那么$i
会在语句之后递增,但是你将它分配给另一方的旧语句,所以它永远不会增加变量
答案 2 :(得分:1)
Check out the manual for incrementation/decrementation operators。你问的行为是正常的,只是违背了你作为C ++开发人员的直觉。
$ i ++ first 返回$ i的值然后执行并递增,而++ $ i在返回之前递增$ i。