欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记一次学习PHP中的错误

程序员文章站 2022-07-29 09:34:34
今天学习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》一书时,里面介绍的优先级是这样的:

记一次学习PHP中的错误

记一次学习PHP中的错误

这两个不是同等优先级的吗?

如果是,为什么输出的不是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 逻辑运算符
, 多处用到

这个匪夷所思的问题就在这里结束了。。