【发布时间】:2015-03-09 03:46:48
【问题描述】:
Operator precedence 告诉订单应该是:+, &, =。但是这段代码执行表明顺序是:&, =, +
$b = 1;
$a = & $b + print('print executed');
if ($a == 1)
echo ' but one was not added and error was not raised';
输出print executed but one was not added and error was not raised
为什么这种情况下的优先级会改变?
附言
$a = new stdClass();
$c = &$a instanceof $a;
var_dump($c); // class stdClass#1 (0) {}
$b = $a instanceof $a;
var_dump($b); // bool(true)
【问题讨论】:
-
哦,sectus,你为什么让我的眼睛这么痛?
-
@Ja͢ck,我只是好奇...
-
&不是这里的二元“和”运算符。 -
@Ja͢ck,我知道。但他们有关系。按位 & 和引用 & 在优先表中占有一席之地。但在这种情况下,它是一个参考。
-
这里的预期结果到底是什么?!您要通过引用 分配
$b + (1)的值吗?由于这没有任何意义,因此这里的结果介于未定义和预期之间。
标签: php reference variable-assignment