PHP运算符优先级!和=的问题

时间:2021-07-17 17:22:50
PHP运算符优先级!和=的问题

从上面的表中看到!运算符的优先级是高于=的,为什么if(!$a=3)这个运算,会先计算$a=3,然后再计算!$a?还是我理解错了?

3 个解决方案

#1


这个是特例,文档有说明

#2


http://php.net/manual/zh/language.operators.precedence.php

文档有说明
Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。


因为赋值的前面一定是变量,如果!$a后就是值了,值不能再赋值的。

#3


原来如此,文档只看上半部分,没看到note

#1


这个是特例,文档有说明

#2


http://php.net/manual/zh/language.operators.precedence.php

文档有说明
Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。


因为赋值的前面一定是变量,如果!$a后就是值了,值不能再赋值的。

#3


原来如此,文档只看上半部分,没看到note