最近在學習 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)))