簡體   English   中英

PHP-和/或關鍵字

[英]PHP - and / or keywords

&&與“ and”相同,並且|| 與PHP中的“或”相同?

我已經進行了一些測試,看來它們的行為相同。 有什么區別嗎?

如果不是,是否還有其他具有單詞等效功能的PHP標志,您認為它使代碼更易於閱讀嗎?

andor具有更高的優先級低於&&|| 更確切地說&&|| andor優先級高於賦值運算符( = )。

http://www.php.net/manual/zh/language.operators.precedence.php

通常不會產生任何變化,但是在某些情況下,不知道該變化會導致某些意外行為。 在此處查看示例:

http://php.net/manual/zh/language.operators.logical.php

是的,它們在邏輯上是相同的。 (我相信“ &&”和“ ||”是Zend編碼標准中的首選,但是我找不到關於此的任何特定信息,因此可能全都是夢。)

說:

  1. “ &&”和“ ||” 比“ AND”和“ OR”的優先級更高 (不太可能相關,但您永遠不知道)。

  2. 許多其他語言都使用“ &&”和“ ||”而不是等效的文本,因此使用此語言可能是一個主意。

  3. 只要您持續使用所選的一組運算符就沒有關系。

讓我困擾的是:

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.

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