gpt4 book ai didi

php - PHP 中的逻辑与赋值运算符优先级

转载 作者:可可西里 更新时间:2023-10-31 23:14:06 26 4
gpt4 key购买 nike

最近我遇到了这样的片段:

$x = 2 && $y = 3; echo (int)$x.':'.(int)$y;

产生输出 1:3。通过查看运算符 precedence sheet我看到逻辑运算符 ||&& 的优先级高于赋值运算符 =。所以第一个表达式应该被评估为 $x = (2 && $y) = 3; 变成 $x = (2 && null) = 3; 最后评估为$x = false = 3; 其次 - 赋值运算符具有正确的结合性,因此解释器应该尝试执行 false = 3 这当然是非法的。所以在我看来,上面提到的代码片段根本不应该编译并且必须抛出解析或运行时错误。但不是那个脚本产生 1:3。这意味着解释器执行的操作是:

a) $y=3

b) 2 && $y

c) $x = (2 && $y)

为什么是这样而不是根据运算符优先级?

最佳答案

operator precedence sheet您将状态链接为单独的注释:

Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.

因此,实际上,表达式内的赋值将被视为有点像子表达式。文档中并不清楚这将如何发生以及何时发生,它只是说明“similar”表达式将以这种方式工作。

关于php - PHP 中的逻辑与赋值运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com