博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php逻辑操作符中&和&&的异同
阅读量:5972 次
发布时间:2019-06-19

本文共 1703 字,大约阅读时间需要 5 分钟。

php有5种算术操作符(+ - * / %),6种赋值操作符(+= -= *= /= %= .=),8种比较操作符(=== < > <= >= != <> !==),6种的逻辑操作符(如&&、 ||、 &、 |、 ! 。其中逻辑与&可写成and,逻辑或|写成or),以及一些其他操作符(错误控制操作符@、 执行操作符反引号"--不是单引号、字符串操作符.与.=、递增/递减操作符++/--、三元操作符?:)。

关于操作符优先级,可以参考相关文档。

 

php中&和&&的异同

 

[php] 
 
 
  1. <?php  
  2. $a=10;  
  3. if($a>4 && (++$a>10))  
  4. {  
  5. }  
  6. //输出结果为11.  
  7. echo $a;  
  8. ?>  
  9.   
  10. <?php  
  11. $a=10;  
  12. if($a>4 and (++$a>10))  
  13. {  
  14. }  
  15. //输出结果为11.  
  16. echo $a;  
  17. ?>  
  18.   
  19. **************************************************************  
  20.   
  21. <?php  
  22. $a=10;  
  23. if($a>4 && (++$a<10))  
  24. {  
  25. }  
  26. //输出结果为11.  
  27. echo $a;  
  28. ?>  
  29.   
  30. <?php  
  31. $a=10;  
  32. if($a>4 & (++$a<10))  
  33. {  
  34. }  
  35. //输出结果为11.  
  36. echo $a;  
  37. ?>  
  38.   
  39. *********************************************************  
  40.   
  41. <?php  
  42. $a=10;  
  43. if($a<4 && (++$a>10))  
  44. {  
  45. }  
  46. //输出结果为10.  
  47. echo $a;  
  48. ?>  
  49.   
  50. <?php  
  51. $a=10;  
  52. if($a<4 & (++$a>10))  
  53. {  
  54. }  
  55. //输出结果为11.  
  56. echo $a;  
  57. ?>  
  58.   
  59. *******************************************************************  
  60.   
  61. <?php  
  62. $a=10;  
  63. if($a<4 && (++$a<10))  
  64. {  
  65. }  
  66. //输出结果为10.  
  67. echo $a;  
  68. ?>  
  69.   
  70. <?php  
  71. $a=10;  
  72. if($a<4 & (++$a<10))  
  73. {  
  74. }  
  75. //输出结果为11.  
  76. echo $a;  
  77. ?>  
  78.   
  79. *******************************************************************  
  80.   
  81. <?php  
  82. // 下面的 sktest() 不被调用,原因是它们被运算符“短路”。  
  83. $a = (false && sktest());  
  84. $b = (true  || sktest());  
  85. $c = (false and sktest());  
  86. $d = (true  or  sktest());  
  87.   
  88. // "||" 的优先级比 "or" 高  
  89. $e = false || true; // $e 被赋值为 (false || true),结果为 true  
  90. $f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]  
  91. var_dump($e, $f);  
  92.   
  93. // "&&" 的优先级比 "and" 高  
  94. $g = true && false; // $g 被赋值为 (true && false),结果为 false  
  95. $h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]  
  96. var_dump($g, $h);  
  97.   
  98. ?>  

 

表达式一$a && $b ,表达式二$a & $b

1、相同点:两个表达式都是当$a、$b都为true时,表达式为真。两种运算符对此表达式结果没有影响。

2、不同点:表达式$a && $b中&&前面的$a为false时,已确定表达式为假,此时逻辑操作符&&后的$b不再进行计算,即所谓的被运算符“短路”了。而对于表达式$a & $b,不论&前的$a真假,表达式后的$b依然要进行计算。逻辑操作符后的$b是否被运行,可能影响到后面的数据和程序结果。

对于逻辑操作符||和|,异同同上。 

转载地址:http://ewzox.baihongyu.com/

你可能感兴趣的文章
MongoDB的安装和使用
查看>>
fix不抖动ie6
查看>>
SVN提交代码时全选文件
查看>>
Frament填坑
查看>>
使用spark-sql-perf评测spark 2.0
查看>>
Android下 scrollview的滚动停止事件的监听方法
查看>>
数据结构与算法之KMP算法02
查看>>
×××安全协议之IPsec
查看>>
用Unity3D的50个技巧:Unity3D最佳实践
查看>>
记录:C#编程中的字符串
查看>>
NEO从源码分析看NEOVM
查看>>
我的友情链接
查看>>
Btrfs入门(一)
查看>>
java中的匿名内部类总结
查看>>
多线程(一、线程安全案例)
查看>>
mysql之DDL操作--数据库
查看>>
java json格式的转换和读取
查看>>
find的命令的使用和文件名的后缀
查看>>
恢复WORD2010的默认模板2011-05-03
查看>>
Test2 unit2
查看>>