慕莱坞8048558
2017-12-14 15:11
具体是什么意思呢?
运算符优先级的高低决定了他的运算顺序,比如乘除比加减优先级高,在编程语言中还有运算顺序,就不一一细讲了。
and 在运算符中优先级比较低 ,比三元运算符低,而&&比三元运算符优先级高,所以在($a and $b)?"通过":"不通过";中要加括号,不加的话等同于$a and ($b?"通过":"不通过"); 也就是 $a and true;(逻辑与的结果也是布尔值,但在echo语句中true和false会转化成1和0来显示,但打印var_dump就会显示布尔值)最后用echo语句就会输出1;
and和&&通用主要是php吸收兼容了多种语言的用法:
本质相同
a and b
and采用空格分开前后元素的原因是and与前后元素连在一起编译时无法辨别,会产生误差。
也可以用其他符号区分运算符和前后元素,比如“()”等。
a&&b
不易产生误差,没必要用其他符号修饰。
echo ($a and $b)?"通过":"不通过"; 加了括号,则先算括号里的,再进行三元运算符的计算,最后输出的结果为“通过”;
echo $a and $b?"通过":"不通过"; 这一句没有加括号,则先算$b?"通过":"不通过"这一部分,运算结果为“通过”,然后再跟$a进行逻辑运算,最后输出的结果为“1”.
导致输出结果不同的原因在于,and这个运算符的优先级比三元运算符要低。
如果没有括号ture就会变成1,因为在echo中ture会被换成1,加上括号就是先运算括号中的内容
and 优先级比 逻辑判断符优先级高,加上( )会让人更能理解
PHP入门篇
455957 学习 · 6306 问题
相似问题