|之间有什么区别?和||运营商?

时间:2010-02-10 01:34:12

标签: php operators

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

5 个答案:

答案 0 :(得分:21)

|bitwise||boolean或。

答案 1 :(得分:12)

含义

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

||是一个布尔运算符,它遇到'true'时会short circuit(任何非零值,包括非空数组)。

实施例

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

答案 2 :(得分: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-statement将在“class!= null”为false后停止。如果你只使用&,它将尝试检查class.someVar并得到一个

很好的NullReferenceException。使用Or-Operator可能不是一个陷阱,因为你不太可能触发坏事,

但要注意这一点。

没有人使用过单曲&或者但是,除非你有一个设计,其中每个条件都是一个函数

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

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

但如上所述,这通常是一种设计气味。

答案 3 :(得分:0)

|对变量的位进行操作:2 | 4 = 6

||对变量的布尔值进行操作:2 || 4 = TRUE

答案 4 :(得分:0)

  

| - >二元运算符|| - >布尔运算符或 - >也是一个布尔值   优先级较低的运算符

$x = false | true; //will set $x to an integer
$x = false || true; //will set $x to true
$x = false or true; //will set $x to false exactly the same that:
($x = false) || true;