php中and 和 &&出坑指南
我原来以为PHP中的and和&&是一样的,只是写法上为了可读性和美观,事实上我错了.这里面深藏了一个坑!
看以下代码:
$bA=true; $bB=false; $b1=$bAand$bB; $b2=$bA&&$bB; var_dump($b1);//$b1=true var_dump($b2);//$b2=false $bA=false; $bB=true; $b3=$bAor$bB; $b4=$bA||$bB; var_dump($b3);//$b3=false var_dump($b4);//$b4=true
奇怪吧,and/&&和or/||出来的结果竟然不一样的.问题出在哪里呢?
我们再看一段代码!
$bA=true; $bB=false; var_dump($bAand$bB);//false var_dump($bA&&$bB);//false $bA=false; $bB=true; var_dump($bAor$bB);//true var_dump($bA||$bB);//true
更奇怪,这时怎么是对的.所以问题可能出现在=上,一番google和文档,终于找到了答案!
运算符优先级
通过这个表,我们可以看到and/&&和or/||这两组运算符的优先级竟然是不一样的.and和or的优先级是低于=的,所以上面的代码就好理解了,就是先做赋值然后再做了一个and或or的逻辑运算,这个运算的结果并没有存下来.所以最后出来让我们匪夷所思的结果.
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。