php的奇怪行为
今天我注意到php中有一个模棱两可的地方。我运行了这个代码php的奇怪行为,php,c++,Php,C++,今天我注意到php中有一个模棱两可的地方。我运行了这个代码 $i = 5; $i = $i ++; var_dump($i); //output 5 instead of 6 让我们假设$i的初始值为5。现在新的值应该是6,但事实上它是5。当我在C++中做同样的事情时,我得到了预期的6。 是php中的某个bug多年来一直没有被注意到,还是其他什么东西。有人能解释一下吗?为什么你认为这个值应该是6 $i正在递增,将返回递增之前的值(因为您使用的是增量后运算符)并将其分配给$i。似乎是合乎逻辑的
$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6
让我们假设$i的初始值为5
。现在新的值应该是6,但事实上它是5
。当我在C++
中做同样的事情时,我得到了预期的6
。
是php中的某个bug多年来一直没有被注意到,还是其他什么东西。有人能解释一下吗?为什么你认为这个值应该是6
$i
正在递增,将返回递增之前的值(因为您使用的是增量后运算符)并将其分配给$i
。似乎是合乎逻辑的。为什么假设值应该是6
$i
正在递增,将返回递增之前的值(因为您使用的是增量后运算符)并将其分配给$i
。似乎合乎逻辑。试试看
$i = ++$i;
你会得到正确的结果
问题是,如果执行$i=$i++
,则$i
在语句后递增,但您将其分配给另一侧的旧语句,因此它永远无法递增变量
$i = ++$i;
你会得到正确的结果
问题是,如果执行$i=$i++
,则$i
在语句后递增,但您将其分配给另一端的旧语句,因此它永远无法递增变量。你所要求的行为是正常的,只是违背了C++开发人员的直觉。
$i++首先返回$i的值,然后执行并递增,++$i在返回之前递增$i。。你所要求的行为是正常的,只是违背了C++开发人员的直觉。
$i++首先返回$i的值,然后执行并递增,++$i在返回之前递增$i。问得好,但这看起来像是非常容易出错的代码,肯定会让人困惑。要增加
$i
,请使用标准约定。选择$i++
或$i+=1
或$i=$i+1
(或其他一些明显的方法)而不是混合它们。分配给后增量操作的结果看起来很奇怪。不知道PHP,但是在C++中,<代码> i= i++;<代码>未定义。结果得到的6
是没有意义的。如果像$i=$i++一样,则与$i=$i相同,然后是$i++,即$i=5和$i++给出了$i=6的好问题,但这看起来像是非常容易出错的代码,肯定会让人困惑。要增加$i
,请使用标准约定。选择$i++
或$i+=1
或$i=$i+1
(或其他一些明显的方法)而不是混合它们。分配给后增量操作的结果看起来很奇怪。不知道PHP,但是在C++中,<代码> i= i++;<代码>未定义。结果得到的6
是没有意义的。如果像$i=$i++一样,则与$i=$i相同,然后是$i++,即$i=5,$i++给出$i=6