之间有什么区别
|
和||
- 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