PHP中if($x=1 || $y=1)和if($x=1 | $y=1)有什么区别?

3

在php中,这两个有什么区别?

可能是重复问题:
参考 - 这个符号在PHP中是什么意思?

 if( $x==1 || $y==1)   if( $x==1 && $y==1)

vs. (分别代表)

 if( $x==1 | $y==1)    if( $x==1 & $y==1)

据我所知,| 和 || 在php中作用相同,但肯定存在差异!!!

你是指赋值操作符 = 还是比较操作符 == - mathematical.coffee
@mathematical.coffee 我的意思是 ==(比较)...我已经修复了! - Arian Faurtosh
5个回答

6

||&& 是布尔运算符,它们接受两个参数,将每个参数转换为布尔值,然后返回 truefalse

|&位运算符。它们将它们的参数转换为二进制数并比较每个位。它们返回一个二进制数。


清晰简洁!完美!谢谢! - Arian Faurtosh
1
@Arian,还要注意||&&从左到右评估它们的参数,并尽快短路,也就是说,如果左表达式为真,则||不会评估右侧的任何内容(对于假和&&同样如此)。 - acelent

2

一种方法是使用条件性的,另一种方法是使用按位


1

|| 这是条件 OR(或)
| 这是位运算中的 or(或)

  1. $a | $b Or(包含或) 在 $a$b 中设置的位被设置
  2. $a & $b And(与) 在 $a$b 中都设置的位被设置。

.

              if( $x==1 || $y=1)             if( $x==1 && $y==1)

  if body --> if one of them is true            both is true

0

首先: if( $x=1 || $y=1) 会将 $x 的值设置为 1,$y 的值也会被设置为 1。

正确的语法应该是:

if( $x==1 || $y==1)

这个区别可以用文字更好地表达:

if( $x==1 OR $y==1) `if( $x==1 AND $y==1)

双和号和双竖线被称为逻辑运算符。在此处查看更多信息

单和号和单竖线是位运算语句。在此处查看更多信息


这是有效的语法;语句$x=1返回1(将1分配给$x),$y同理,然后这些变量进行按位或或按位与运算。 - mathematical.coffee
这就是我在第一个句子中所说的。 - Samuel Cook
哦,我误解了你的最后一句话,我明白了。 - mathematical.coffee

0

文档是你的朋友。&&||是逻辑运算符。你可以在这里阅读更多相关信息。

我强烈建议你阅读关于运算符优先级的内容,并了解为什么&&and以及||or是不同的。学习何时使用其中一个比另一个更合适。基本上,=的优先级高于andor,但低于&&||逻辑运算符部分的示例#1很好地解释了这一点。

在其他语言中,你只有&&||,没有andor

&|是位运算符。你可以在这里阅读有关它们的内容。

位运算符的典型用法是标志。其中一个常见的用途是PHP的error_reporting设置


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接