不嘗試還真不知道,竟然是由於優先級的差異致使,若是是真實編程中遇到,排錯就很困難了,幸好這裏看到了:
php
$a = true; //聲明一個布爾型變量$a,賦值爲真 $b = true; //聲明一個布爾型變量$b,賦值爲真 $c = false; //聲明一個初值爲假的布爾型變量$c if($a or $b and $c){ //用or作判斷 echo "真"; }else{ echo "假"; } echo "<br/>"; if($a || $b and $c){ //用||作判斷 echo "真"; }else{ echo "假"; }
輸出結果:編程
真
ide
假spa
沒有錯,就是「先真,後假」,就是由於and優先級比or高,而||又比and高。。。。字符串
更多詳細的優先級string
結合方向 | 運算符 | 附加信息 |
---|---|---|
非結合 | clone new | clone 和 new |
左 | [ | array() |
非結合 | ++ -- | 遞增/遞減運算符 |
非結合 | ~ - (int) (float) (string) (array) (object) (bool) @ | 類型 |
非結合 | instanceof | 類型 |
右結合 | ! | 邏輯操做符 |
左 | * / % | 算術運算符 |
左 | + - . | 算術運算符 和 字符串運算符 |
左 | << >> | 位運算符 |
非結合 | < <= > >= <> | 比較運算符 |
非結合 | == != === !== | 比較運算符 |
左 | & | 位運算符 和 引用 |
左 | ^ | 位運算符 |
左 | | | 位運算符 |
左 | && | 邏輯運算符 |
左 | || | 邏輯運算符 |
左 | ? : | 三元運算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= | 賦值運算符 |
左 | and | 邏輯運算符 |
左 | xor | 邏輯運算符 |
左 | or | 邏輯運算符 |
左 | , | 多處用到 |