各種可能的判斷情況基本都已分析,詳見代示例:
// 運算符的優(yōu)先級:"&&"("||") > "=" > "and"("or")
$a1 = true or true and false; // true or和and比=低,第一個true直接賦值
$a2 = false or true or true; // false or和and比=低,第一個false直接賦值
$a3 = (true or true and false); // true 括號內(nèi)運算完賦值,括號內(nèi)or和and同級,or結(jié)果為true后則括號內(nèi)運算完畢
$a4 = (false or false or true); // true 括號內(nèi)運算完賦值,括號內(nèi)or和and同級,or結(jié)果為false則第二個or繼續(xù)運算
$a5 = (true and true and false); // false 括號內(nèi)運算完賦值,兩個and都要運算完
$a6 = true || true and false; // true and比=低,運算完||直接賦值
$a7 = false || false or true; // false or比=低,運算完||直接賦值
$a8 = (true || true and false); // false 括號內(nèi)運算完賦值,||與and不同級,不管||結(jié)果如何,后邊and都需要運算
$a9 = (true || true && false); // true 括號內(nèi)運算完賦值,||與&&同級,||運算完后是true則括號內(nèi)運算完畢
$a10 = true || true && false; // true ||與&&同級且比=高,||運算完是true,&&不再運算
$a11 = false || false || true; // true 兩個||同級且比=高,第一個||運算完是false,第二個||繼續(xù)運算
var_dump($a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10, $a11);