[英]PHP - and / or keywords
&&
與“ and”相同,並且||
與PHP中的“或”相同?
我已經進行了一些測試,看來它們的行為相同。 有什么區別嗎?
如果不是,是否還有其他具有單詞等效功能的PHP標志,您認為它使代碼更易於閱讀嗎?
and
和or
具有更高的優先級低於&&
和||
。 更確切地說&&
和||
and
和or
優先級高於賦值運算符( =
)。
http://www.php.net/manual/zh/language.operators.precedence.php
通常不會產生任何變化,但是在某些情況下,不知道該變化會導致某些意外行為。 在此處查看示例:
讓我困擾的是:
echo (false and false ? true : true);
// (empty/false)
您可能會猜測只有可能的輸出為“ 1”(真),因為沒有任何情況下可能會輸出“假” ... ...但是它將是“”(假)。
在這種情況下,使用&&作為運算符至少可以滿足我的期望:
echo (false && false ? true : true);
// 1
因此,在某些情況下,用法很重要。
區別在於優先級 。 但不僅彼此相比!
在大多數情況下,您不會介意的,但是在某些特定情況下,您必須退后一步來了解大局。 以這個為例:
// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))
$g = true && false;
// The constant true is assigned to $h before the "and" operation occurs
// Acts like: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
這將分別產生:
bool(false)
bool(true)
換句話說, &&
具有比=
更高的優先級, =
優先級高於and
,如http://php.net/manual/en/language.operators.precedence.php中所述 。 (在其他答案中也提到過,但我認為值得詳細說明,因為濫用會導致邏輯錯誤)
希望對您有幫助。 您可以在http://php.net/manual/en/language.operators.logical.php中找到更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.