窦哥

人,一半简答题,一半选择题。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  最近在学习 php ,学到了逻辑运算符,总结总结。

  逻辑运算符用来组合逻辑运算的结果,是程序设计中一组非常重要的运算符。

  PHP的逻辑运算符如下:

运算符 举例 结果为真
&& 或 and (逻辑与) $a and $b  或者  $a && $b  当$a和$b都为真时结果为true
||   或 or   (逻辑或)  $a || $b    或者  $a or $b  当$a为真或者$b为真时结果为true
xor  (逻辑异或) $a xor $b   当$a、$b 一个是真一个是假时结果为true
 !     (逻辑非)  !$a 当$a为假时结果为true

 

php中的这4种逻辑运算符,如果每个单独使用没有什么问题,大家都懂,我就不多说了。

例: $a and $b和$a && $b没有任何区别。同样的$a or $b和$a || $b也完全一样。

但是如果混合使用,像这样:

例:

$i=true;

$j=true;

$z=false;

if($i or $j and $z){

  echo "true";

}else{

  echo "false"

}

//    true

       if($i || $j and $z){

    echo "true";

   }else{

    echo "false"

   }

//    false 

我们可以看到这两个 if 语句 除了 or 和 || 不同之外,其他完全一样。但是结果不同,那这是为什么呢?

因为这两种形式的逻辑运算符优先级不同,说白了就是运算顺序不同。就像加减乘除,是先算加减后算乘除一样。

这四个符号的优先允许从高到低是:&&、||、and、or。

所以上面这两个if语句就相当于:

$i or $j and $z  =>  $i or ( $j and $z )   =>  true  or  ( true )     => 结果为true

$i || $j and $z  =>   ( $i || $j ) and $z   =>  ( true )  and  false  => 结果为false

 

如果你记不住级别,也没有关系,你可以使用括号。

例:$a and (($b != $c) or (5 * (50-$d)))

 

 

 

                    

 

posted on 2017-05-25 09:32  窦哥  阅读(2463)  评论(0编辑  收藏  举报