我原來以為PHP中的and和&&是一樣的, 只是寫法上為了可讀性和美觀, 事實(shí)上我錯了. 這里面深藏了一個坑!
看以下代碼:
$bA = true;$bB = false;$b1 = $bA and $bB;$b2 = $bA && $bB;var_dump($b1); // $b1 = truevar_dump($b2); // $b2 = false$bA = false;$bB = true;$b3 = $bA or $bB;$b4 = $bA || $bB;var_dump($b3); // $b3 = falsevar_dump($b4); // $b4 = true
奇怪吧, and/&&和or/||出來的結(jié)果竟然不一樣的. 問題出在哪里呢?
我們再看一段代碼!
$bA = true;$bB = false;var_dump($bA and $bB); // falsevar_dump($bA && $bB); // false$bA = false;$bB = true;var_dump($bA or $bB); // truevar_dump($bA || $bB); // true
更奇怪, 這時(shí)怎么是對的. 所以問題可能出現(xiàn)在=上, 一番google和文檔,終于找到了答案!
運(yùn)算符優(yōu)先級
通過這個表, 我們可以看到 and/&& 和 or/|| 這兩組運(yùn)算符的優(yōu)先級竟然是不一樣的. and和or的優(yōu)先級是低于=的, 所以上面的代碼就好理解了, 就是先做賦值然后再做了一個and或or的邏輯運(yùn)算, 這個運(yùn)算的結(jié)果并沒有存下來. 所以最后出來讓我們匪夷所思的結(jié)果.
結(jié)合性 | 運(yùn)算符 | 額外信息 |
---|---|---|
無結(jié)合性 | clone new | 克隆和new |
左 | [ | 數(shù)組 |
左 | ** | 算術(shù) |
右 | ++ ― ~ (int) (float) (string) (array) (object) (bool) @ | 類型和自增/自減 |
無結(jié)合性 | instanceof | 類型 |
右 | ! | 邏輯運(yùn)算 |
左 | * / % | 算術(shù) |
左 | + 主站蜘蛛池模板: 平安县| 安远县| 蚌埠市| 大渡口区| 石楼县| 临武县| 新昌县| 南汇区| 镇江市| 会同县| 宁国市| 黄平县| 庄浪县| 巴林右旗| 修水县| 乐山市| 新津县| 桑植县| 长垣县| 牙克石市| 静安区| 东阿县| 吕梁市| 垫江县| 双柏县| 姜堰市| 登封市| 疏附县| 广饶县| 甘肃省| 东丽区| 苏尼特右旗| 三原县| 台湾省| 屯门区| 资溪县| 天水市| 南召县| 那坡县| 尚义县| 宜兴市| |