下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符优先级
结合方向
运算符
附加信息
无 clone new clone 和 new
左 [ array()
右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
无 instanceof 类型
右 ! 逻辑运算符
左 * / % 算术运算符
左 + - . 算术运算符和字符串运算符
左 << >> 位运算符
无 == != === !== <> 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 = += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到
对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。
|| 是或者的意思 ,符号两边有一个成立就是true if(0 || $b=7){} 先判断0 ,0是false,在判断$b=7;
如果想实现前边 是false 的后边不执行 可以用&&符号 if(0 && $b=7){} &&符号是 两边都成立才会返回true 所以当第一个是 false的时候后边的就不在验证了。也就不会执行到 $b=7.
PHP并不完全遵守优先级的定义, 这个在PHP的手册中也有说明:
Note: 尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。
http://www.php.net/manual/zh/language.operators.precedence.php
所以 对表达式中有歧义的加括号
运算符 先乘除 后加减 跟数学真心一样的。。。
你上面写得是逻辑运算符,你可以百度搜索下PHP逻辑运算符的优先等级
||的优先级低吧。。