问答详情
源自:5-6 PHP中的逻辑运算符

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

具体是什么意思呢?

提问者:慕莱坞8048558 2017-12-14 15:11

个回答

  • 慕粉152532571
    2019-08-21 10:35:09

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

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

  • 慕田峪4096734
    2019-07-31 14:01:47

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

    本质相同

    a and b 

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

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

    a&&b

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


  • qq_long妹_0
    2018-03-21 22:02:43

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

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

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

  • gvyuvgyuyu
    2018-03-11 19:11:23

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

  • 慕尼黑7216185
    2017-12-14 15:21:19

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