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

来源:5-6 PHP中的逻辑运算符

慕莱坞8048558

2017-12-14 15:11

具体是什么意思呢?

写回答 关注

5回答

  • 慕粉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这个运算符的优先级比三元运算符要低。

    web前端_...

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

    2020-01-05 18:43:17

    共 3 条回复 >

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

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

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

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

    _whoAm...

    and要是高的话 还加括号干嘛 。。

    2019-01-25 16:00:46

    共 2 条回复 >

PHP入门篇

PHP入门教程轻松学习,行业大牛帮您快速掌握PHP编程基础知识。

455957 学习 · 6306 问题

查看课程

相似问题