&&
与“和”相同,并且||
与PHP中的“或”相同吗?
我做了一些测试,看起来它们表现得一样。有什么不同吗?
如果没有,是否有任何其他PHP标志具有等效字,你认为它使代码更容易阅读吗?
答案 0 :(得分:36)
and
和or
的 低于&&
和||
。更准确地说,&&
和||
的优先级高于赋值运算符(=
),而and
和or
的优先级更低。
http://www.php.net/manual/en/language.operators.precedence.php
通常它没有什么区别,但有些情况下,不知道这种差异会导致一些意外的行为。请参见此处的示例:
答案 1 :(得分:6)
是的,它们在逻辑上是一样的。 (我相信“&&”和“||”是Zend coding standards中的首选,但我找不到任何具体的信息,所以它可能都是一个梦想。或者其他什么。 )
那说:
“&安培;&安培;”和“||”是higher precedence比“AND”和“OR”(不太可能相关,但你永远不知道)。
许多其他语言使用“&&”和“||”,而不是文本等价物,所以这可能是一个想法。
只要你一直使用你选择的一组操作符就没那么重要。
答案 2 :(得分:3)
困扰我的是:
echo (false and false ? true : true);
// (empty/false)
你可能猜测只有可能的输出为“1”(真),因为没有可能输出错误的情况......但它会是“”(假)。
使用&&作为这种情况下的运营商,至少满足了我的期望:
echo (false && false ? true : true);
// 1
因此,在某些情况下,使用情况非常重要。
答案 3 :(得分: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
找到更多信息