从上面的表中看到!运算符的优先级是高于=的,为什么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后就是值了,值不能再赋值的。
文档有说明
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后就是值了,值不能再赋值的。
文档有说明
Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。
因为赋值的前面一定是变量,如果!$a后就是值了,值不能再赋值的。
#3
原来如此,文档只看上半部分,没看到note