簡體   English   中英

為什么(false和false或true)返回true

[英]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。 我沒有合理的解釋為什么會發生這種情況。

&&|| andor上有更高的優先權

您可以在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

我想你只使用一個'類型'的邏輯運算符,使用&&|| 或者andor 不要結合它們。

即使邏輯上是|| or是相同的,他們的先例不是。

|| 具有比OR更高的優先級,因此它們在您的2個語句中的解釋不同。 我想如果你添加一個括號,它將有相同的結果:

(false and (false || true));

要么

(false and (false or true));

更多這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM