记一次学习PHP中的错误
程序员文章站
2022-05-05 16:28:13
今天学习PHP时,回想起一段代码 当时非常纳闷,因为在看《PHP从XX到XX》一书时,里面介绍的优先级是这样的: 这两个不是同等优先级的吗? 如果是,为什么输出的不是false 接下来得到某群主的教导,“把前面的判断括号”,结果如下: 不是程序问题,那就是优先级的问题,最后查了一下优先级,如下表: ......
今天学习PHP时,回想起一段代码
<?php> $i = true; $o = true; $p = false; if($i or $o and $p){ echo '输出为'.'true'; } else{ echo '输出为'.'false'; } // 结果输出是true
当时非常纳闷,因为在看《PHP从XX到XX》一书时,里面介绍的优先级是这样的:
这两个不是同等优先级的吗?
如果是,为什么输出的不是false
接下来得到某群主的教导,“把前面的判断括号”,结果如下:
<?php> $i = true; $o = true; $p = false; if(($i or $o) and $p){ echo '输出为'.'true'; } else{ echo '输出为'.'false'; } // 结果输出是false
不是程序问题,那就是优先级的问题,最后查了一下优先级,如下表:
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
这个匪夷所思的问题就在这里结束了。。
上一篇: 7-12 小猪佩奇之自来水厂(20 分)
下一篇: 小明这是找死的节奏啊