记一次学习PHP中的错误

2018-06-22 05:40:24来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

今天学习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 逻辑运算符
, 多处用到

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:PHP操作redis之String(字符串)、List(列表)(一)

下一篇:小说网站建设,小说网站制作,小说网站源码,小说网站定制开发