[英]Why (false and false or true) returns true
var_dump(false and false || true);
// result: bool(false)
(false and false || true)
按預期返回false。
var_dump(false and false or true);
// result: bool(true)
但是(false and false or true)
返回true。 我沒有合理的解釋為什么會發生這種情況。
&&
和||
在and
和or
上有更高的優先權
您可以在PHP文檔中看到運算符優先級
所以
<?php
var_dump(false and false || true);
// eq: false and (true or false) => false
var_dump(false and false or true);
// eq: (false and false) or true => true
請查看http://php.net/manual/en/language.operators.precedence.php
當我們按優先級對運算符排序時,它是:
&& > || > AND > OR
這是你的問題的答案。 ||
優先於AND
。
我想你只使用一個'類型'的邏輯運算符,使用&&
和||
或者and
和or
。 不要結合它們。
即使邏輯上是||
or
是相同的,他們的先例不是。
||
具有比OR
更高的優先級,因此它們在您的2個語句中的解釋不同。 我想如果你添加一個括號,它將有相同的結果:
(false and (false || true));
要么
(false and (false or true));
更多這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.