php中or与||, and与&&的区别总结
2022-05-31MYSQL
在PHP中,&&与and都表示逻辑与,||与or都表示逻辑或,并且它们都是短路运算符。而它们的区别在于运算的优先级不同
对于&&和and,||和or, 本身没有区别,只是使用习惯问题 ,但是有时候牵涉到运算符优先级的问题,结果会不同,记录下。例如:
<?php $p = 6 or 0; var_dump($p); //int(6) $p = 6 || 0; var_dump($p); //bool(true) $p = 6 and 0; var_dump($p); //int(6) $p = 6 && 0; var_dump($p); //bool(false)
因为赋值运算的优先级比and和or的高,所以先赋值;比&&和||的低,所以逻辑运算符先执行,先逻辑运算,再赋值。
在PHP中,&&与and都表示逻辑与,||与or都表示逻辑或,并且它们都是短路运算符。而它们的区别在于运算的优先级不同。
<?php $t1=true and false; // bool(true) $t2=true && false; // bool(false) var_dump($t1,$t2);
在上面的代码中$t1的值为true,$t2的值为false。因为运算符and、=、&&的优先级为&&>=>and,所以在执行第一行时,会先将true赋值给t1,false被忽略。而第二行代码会先进行&&运算,然后将运算的结果false,赋值给t2。
同样对于||和or。运算符or、=、||的优先级为||>=>or。下面代码运行后,$t1的值为false,$2的值为true。
<?php $t1=false or true; // bool(false) $t2=false || true; // bool(true) var_dump($t1,$t2);
运算符的优先级
通过这个表, 我们可以看到 and/&& 和 or/|| 这两组运算符的优先级竟然是不一样的. and和or的优先级是低于=的, 所以上面的代码就好理解了, 就是先做赋值然后再做了一个and或or的逻辑运算
很赞哦! ()