【发布时间】:2019-08-16 20:21:07
【问题描述】:
执行此代码时,我正在研究 php7.2 中的运算符优先级:
$i = 1;
$a[$i] = $i++;
var_dump($a);
$j = 1;
$b[$j++] = $j++;
var_dump($b);
我得到了这个结果:
array(1) {
[2]=>
int(1)
}
array(1) {
[1]=>
int(2)
}
我不明白为什么这段代码会给出这些输出。我可以得到第一个 var_dump 但第二个对我来说真的很奇怪。
你能解释一下这两个例子是如何被php逐步解释的吗?
我在 php 4 上没有得到相同的结果。
【问题讨论】:
-
你知道前置增量和后置增量的区别吗?如果没有,请首先阅读。
-
从不写这样的代码。
-
这应该如何特定于 PHP 7.x ?即使在 PHP 4.x 上,这也是有道理的。
-
我知道前增量和后增量之间的区别。我没有得到的是数组分配完成的顺序以及为什么在这两个示例中键和值是相反的。
-
@MossetJérémie 它仍然是完全无意义的,试图在访问索引时增加索引值......操作顺序应该完全相同,至少在理论上(我不是安装 PHP 4.x 只是为了重现不合逻辑的代码)。
标签: php php-7 php-7.2 post-increment