为了账号安全,请及时绑定邮箱和手机立即绑定

($a and $b)有括号,但是$a && $b 没有括号

具体是什么意思呢?

正在回答

5 回答

运算符优先级的高低决定了他的运算顺序,比如乘除比加减优先级高,在编程语言中还有运算顺序,就不一一细讲了。

and 在运算符中优先级比较低 ,比三元运算符低,而&&比三元运算符优先级高,所以在($a and $b)?"通过":"不通过";中要加括号,不加的话等同于$a and ($b?"通过":"不通过"); 也就是 $a and true;(逻辑与的结果也是布尔值,但在echo语句中true和false会转化成1和0来显示,但打印var_dump就会显示布尔值)最后用echo语句就会输出1;

0 回复 有任何疑惑可以回复我~

and和&&通用主要是php吸收兼容了多种语言的用法:

本质相同

a and b 

  • and采用空格分开前后元素的原因是and与前后元素连在一起编译时无法辨别,会产生误差。

  • 也可以用其他符号区分运算符和前后元素,比如“()”等。

a&&b

  • 不易产生误差,没必要用其他符号修饰。


1 回复 有任何疑惑可以回复我~

echo ($a and $b)?"通过":"不通过";    加了括号,则先算括号里的,再进行三元运算符的计算,最后输出的结果为“通过”;

echo $a and $b?"通过":"不通过";     这一句没有加括号,则先算$b?"通过":"不通过"这一部分,运算结果为“通过”,然后再跟$a进行逻辑运算,最后输出的结果为“1”.

导致输出结果不同的原因在于,and这个运算符的优先级比三元运算符要低。

2 回复 有任何疑惑可以回复我~
#1

慕尼黑8976930

输出结果不是“通过”吗?为什么是“1”?
2018-12-10 回复 有任何疑惑可以回复我~
#2

这个平底锅有点热 回复 慕尼黑8976930

布尔类型true的返回值为1
2018-12-17 回复 有任何疑惑可以回复我~
#3

web前端_彭于晏

echo $a and $b?"通过":"不通过"; 这一句没有加括号,则先算$b?"通过":"不通过"这一部分,运算结果为“通过”,然后再跟$a进行逻辑运算,最后输出的结果为“1”. 为什么输出的是1呢
2020-01-05 回复 有任何疑惑可以回复我~

如果没有括号ture就会变成1,因为在echo中ture会被换成1,加上括号就是先运算括号中的内容

0 回复 有任何疑惑可以回复我~

and 优先级比 逻辑判断符优先级高,加上( )会让人更能理解

0 回复 有任何疑惑可以回复我~
#1

qq_嶸歸_0

放屁!!!
2018-10-14 回复 有任何疑惑可以回复我~
#2

_whoAmI

and要是高的话 还加括号干嘛 。。
2019-01-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

($a and $b)有括号,但是$a && $b 没有括号

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信