为什么PHP中的递减运算符以这种方式工作?[复制]

Why does the decrementing operator in PHP work in this way? [duplicate]

提问人:Sharanya Dutta 提问时间:6/6/2023 最后编辑:Sharanya Dutta 更新时间:6/6/2023 访问量:38

问:

以下代码:

$arr = array(1, 2, 3, 4, 5);
$i = 5;
while($i >= 1){
    var_dump($i);
    var_dump($arr[--$i]);
}

具有以下输出:

int(5)
int(5)
int(4)
int(4)
int(3)
int(3)
int(2)
int(2)
int(1)
int(1)

但是,如果我们用单行替换循环中的两行:while

var_dump($i == $arr[--$i]);

该代码具有以下输出:

bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

第一个输出显示 和 相等。$i$arr[--$i]

第二个输出显示 和 不相等。$i$arr[--$i]

为什么会有这种差异?我错过了什么?

php while-loop 运算符 递减

评论

0赞 deceze 6/6/2023
你可以把它归结为 ,也许令人惊讶的是。var_dump($i == --$i)true
1赞 deceze 6/6/2023
@Álvaro 我认为 OP 非常清楚指数 4 = 5 的事情,这是预期的结果。问题是为什么当将两个表达式合二为一时,行为会有所不同。

答: 暂无答案