繁体   English   中英

php的奇怪行为

[英]strange behaviour of php

今天,我注意到php中的歧义。 我运行了这段代码

$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6 

让我们假设$i is 5的初始值为$i is 5 现在,新值应为6,但实际上为5 当我在C++执行相同的操作时,我得到了6预期的结果。 是多年以来一直未引起注意的php中的一些bug还是其他问题。 有人可以解释一下吗?

为什么假定该值应为 6?

$i正在递增,将返回递增之前的值(因为您使用的是post递增运算符 )并分配给$i 似乎合乎逻辑。

尝试

$i = ++$i;

您会得到正确的结果。

问题是,如果执行$i = $i++$i在语句后递增,但是您将其分配给另一端的旧变量,因此它永远不会递增变量

查阅有关增减运算符的手册 您所要求的行为是正常的,只是违反了您作为C ++开发人员的直觉。

$ i ++ 首先返回$ i的值,然后执行并递增,而++ $ i在返回之前递增$ i。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM