||、&& 都是短路運算子
短路與 &&
運算方法:
只要「&&」前面是false,無論「&&」後面是true還是false,結果都將返「&&」前面的值;
$g = false&& true; // $g 被賦值為 (false && true),結果為 true
只要「&&」前面是true,無論「&&」後面是true還是false,結果都將返「&&」後面的值;
$g = true && false; // $g 被賦值為 (true && false),結果為 false
總結:假前真後
短路或 ||
運算方法:
只要「||」前面為false,不管「||」後面是true還是false,都返回「||」後面的值。
$g = false || true; // $g 被賦值為 (false || true),結果為 true
只要「||」前面為true,不管「||」後面是true還是false,都返回「||」前面的值。
$g = true || false; // $g 被賦值為 (false || true),結果為 true
總結:真前假後
拓展 and 和 or(主要還是看運算子的優先順序)
<?php
// 下面的 foo() 不會被呼叫,因為它們被運算子「短路」了。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// "||" 的優先順序比 "or" 高
$e = false || true; // $e 被賦值為 (false || true),結果為 true
$f = false or true; // $f 被賦值為 false [altair注:"=" 的優先順序比 "or" 高]
var_dump($e, $f);
// "&&" 的優先順序比 "and" 高
$g = true && false; // $g 被賦值為 (true && false),結果為 false
$h = true and false; // $h 被賦值為 true [altair注:"=" 的優先順序比 "and" 高]
var_dump($g, $h);
?>
上例的輸出類似於:
bool(true)
bool(false)
bool(false)
bool(true)
php位運算子與邏輯運算 php 邏輯運算子 和
在php中,邏輯運算子無非是將值進行邏輯運算。還有其它用法嗎?先看看以下的 吧。提前給出結論就是 or 這兩種運算子在程式中可以加快php 的執行速度。test 李四 test 張三 test 張三來了 echo test 輸出 李四 test 李四 test 張三 test 張三不在這裡 echo...
邏輯運算子 短路特性
邏輯運算子 邏輯與 同真為真,一假則假 邏輯或 一真則真,同假則假 邏輯非 取反 真為假,假為真 短路特性 1 對於邏輯與來說,當第乙個條件已經為假時,則表示式結果一定為假 同真為真,一假則假 此時不再執行第二個條件。例如 a b 當a條件為假的時候,則b條件被短路,不再執行b條件,直接返回假。2 ...
PHP 邏輯運算子
邏輯運算子 例子名稱 結果 a and b and 邏輯與 true,如果 a 與 b 都為true。a or b or 邏輯或 true,如果 a 或 b 任一為true。a xor b xor 邏輯異或 true,如果 a 或 b 任一為true,但不同時是。a not 邏輯非 true,如果 ...