不嘗試還真不知道,居然是因為優(yōu)先級的差別導致,如果是真實編程中遇到,排錯就很困難了,幸虧這里看到了:
站在用戶的角度思考問題,與客戶深入溝通,找到新榮網(wǎng)站設計與新榮網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務覆蓋新榮地區(qū)。
$a = true; //聲明一個布爾型變量$a,賦值為真 $b = true; //聲明一個布爾型變量$b,賦值為真 $c = false; //聲明一個初值為假的布爾型變量$c if($a or $b and $c){ //用or做判斷 echo "真"; }else{ echo "假"; } echo "
"; if($a || $b and $c){ //用||做判斷 echo "真"; }else{ echo "假"; }
輸出結(jié)果:
真
假
沒有錯,就是“先真,后假”,就是因為and優(yōu)先級比or高,而||又比and高。。。。
更多詳細的優(yōu)先級
結(jié)合方向 | 運算符 | 附加信息 |
---|---|---|
非結(jié)合 | clone new | clone 和 new |
左 | [ | array() |
非結(jié)合 | ++ -- | 遞增/遞減運算符 |
非結(jié)合 | ~ - (int) (float) (string) (array) (object) (bool) @ | 類型 |
非結(jié)合 | instanceof | 類型 |
右結(jié)合 | ! | 邏輯操作符 |
左 | * / % | 算術運算符 |
左 | + - . | 算術運算符 和 字符串運算符 |
左 | << >> | 位運算符 |
非結(jié)合 | < <= > >= <> | 比較運算符 |
非結(jié)合 | == != === !== | 比較運算符 |
左 | & | 位運算符 和 引用 |
左 | ^ | 位運算符 |
左 | | | 位運算符 |
左 | && | 邏輯運算符 |
左 | || | 邏輯運算符 |
左 | ? : | 三元運算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= | 賦值運算符 |
左 | and | 邏輯運算符 |
左 | xor | 邏輯運算符 |
左 | or | 邏輯運算符 |
左 | , | 多處用到 |