Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试通过引用赋值来理解运算符优先级_Php_Reference_Variable Assignment - Fatal编程技术网

Php 尝试通过引用赋值来理解运算符优先级

Php 尝试通过引用赋值来理解运算符优先级,php,reference,variable-assignment,Php,Reference,Variable Assignment,指示顺序应为:+,&,=。但是这个代码执行表明顺序是:&,=,+ $b = 1; $a = & $b + print('print executed'); if ($a == 1) echo ' but one was not added and error was not raised'; 执行了输出打印,但未添加一个,且未引发错误 为什么在这种情况下更改优先级 附言 可以说,这并不能真正回答你的问题,但是请考虑这个代码: $b = 1; $a = &$b + 123

指示顺序应为:
+,&,=
。但是这个代码执行表明顺序是:
&,=,+

$b = 1;
$a = & $b + print('print executed');
if ($a == 1)
    echo ' but one was not added and error was not raised';
执行了输出
打印,但未添加一个,且未引发错误

为什么在这种情况下更改优先级

附言


可以说,这并不能真正回答你的问题,但是请考虑这个代码:

$b = 1;
$a = &$b + 123;
操作码显示了以下执行策略:

编译变量:!0=$b!1=一美元
行#*op fetch ext返回操作数
-----------------------------------------------------------------------------
30>分配!0, 1
4 1分配\u参考$1!1.0
2加上~2$1123
3免费~2
如您所见,引用赋值发生,加法被存储在一个临时变量中,然后被释放;基本上,这是一个禁区


也许文档可以更清楚,但我无法想象这样一个场景:哦,sectus,为什么你让我的眼睛这么痛?@Ja͢ck,我只是好奇,
&
不是这里的二进制和运算符。@Ja͢ck,我知道。但它们是相关的。位和引用在优先表中有一个位置。但在这种情况下,它是一个参考。这里的预期结果到底是什么?!是否要通过引用指定
$b+(1)
的值?因为这没有任何意义,所以这里的结果介于未定义和预期之间。是的。我的想法是正确的。并且有一个操作符(
=&
ASSIGN_REF)而不是两个。这是文件的缺陷。
$b = 1;
$a = &$b + 123;