首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP运算符difference && and "and“

PHP运算符difference && and "and“
EN

Stack Overflow用户
提问于 2012-09-04 17:26:33
回答 3查看 1.5K关注 0票数 5

可能重复: 'AND' vs '&&' as operator

对于非常基本的问题,我很抱歉,但我一周前才开始学习PHP &在google/stackoverflow上找不到这个问题的答案。

我通过了下面的课程:

代码语言:javascript
复制
$one = true;
$two = null;
$a = isset($one) && isset($two);
$b = isset($one) and isset($two);

echo $a.'<br>';
echo $b;

其产出是:

代码语言:javascript
复制
false
true

我读过&/也是一样的。两人的结果有何不同?谁能说出真正的原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-04 17:30:02

原因是operator precedence。在您使用&&and=的三个操作符中,优先级顺序是

  • &&
  • =
  • and

因此,程序中的$a按预期计算,但对于$b,首先计算了语句$b = isset($one),给出了意想不到的结果。它可以按以下方式固定。

代码语言:javascript
复制
$b = (isset($one) and isset($two));
票数 15
EN

Stack Overflow用户

发布于 2012-09-04 17:31:06

操作符的分组就是这样进行的。

代码语言:javascript
复制
$one = true;
$two = null;
$a = (isset($one) && isset($two));
($b = isset($one)) and isset($two);

echo $a.'<br>';
echo $b;

这就是为什么第一次返回为假,第二次返回为真。

票数 1
EN

Stack Overflow用户

发布于 2012-09-04 17:30:03

请参阅:http://www.php.net/manual/en/language.operators.logical.php

它解释了"and“与”&“是不同的,因为操作的顺序是不同的。在这种情况下,首先要分配任务。所以如果你要做:

代码语言:javascript
复制
$b = (isset($one) and isset($two));

你最终会得到预期的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12268487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档