【发布时间】:2014-09-22 09:09:42
【问题描述】:
代码块的增量运算符和赋值运算符的精确性和关联性是什么
$a=array(1,2,3);
$b=array(4,5,6);
$c=1;
$a[$c++]=$b[$c++];
print_r($a);
根据执行它输出
Array
(
[0] => 1
[1] => 6
[2] => 3
)
但我无法理解数组 $a 索引 1 如何保存数组 $b 索引 2 的值。谁能解释一下执行是如何发生的场景?
【问题讨论】:
-
这不是未定义行为的情况吗?见stackoverflow.com/questions/949433/…。
-
您能否澄清一下您对这种行为的困惑究竟是什么?是
++的行为还是执行顺序?你会期待什么结果? -
嗨 deceze 最令人困惑的是应该先计算哪一侧的帖子增量?但是根据优先表,增量运算符具有正确的关联性。所以在第四行的问题中,赋值运算符右侧的 $c++ 应该首先执行,即 $b[$c++] 应该首先执行。
标签: php operator-precedence associativity