之间有什么区别

||| - PHP中这两个运算符有什么区别?


| 是一个按位或, || 是一个布尔值或。


含义

| 是二元运算符,它将二进制或左右值的位进行二进制化。

|| 是一个布尔运算符,它在遇到'真'时会短路(任何非零值,这包括非空数组)。

例子

print_r(1 | 2)  // 3
print_r(1 || 2) // 1

当与功能一起使用时:

function numberOf($val) {
    echo "$val, ";
    return $val;
}

echo numberOf(1) | numberOf(2);  // Will print 1, 2, 3
echo numberOf(1) || numberOf(2); // Will print 1, 1

就像&和&&操作符一样,双操作符是一个“短路”操作符。

例如:

if(condition1 || condition2 || condition3)如果condition1为true,则不会检查条件2和3。

if(condition1 | condition2 | condition3)这将检查条件2和3,即使1已经为真。 由于你的条件可能是相当昂贵的功能,你可以得到一个好的

通过使用它们来提升性能。

有一个大的警告,NullReferences或类似的问题。 例如:

if(class!= null && class.someVar <20)如果class为null,那么if语句将在“class!= null”为false后停止。 如果你只使用&,它会尝试检查class.someVar,你会得到一个

不错的NullReferenceException。 由于Or运算符可能不是一个陷阱,因为它不太可能触发一些不好的事情,

但要记住这一点。

没有人使用过单个&或| 不过,除非你有一个设计,每个条件都是一个功能

执行。 听起来像是一种设计气味,但有时(很少)它是一种干净的做事方式。 &运算符“运行这3个函数,

如果其中一个返回false,则执行else块“,而| do”只在else块返回false时才运行else块“ - 可能很有用,

但正如所说的那样,这往往是一种设计气味。

链接地址: http://www.djcxy.com/p/1811.html

上一篇: What is the difference between the

下一篇: PHP's <> operator