关于php短路的问题特性,三种写法的区别

$a = 1;
$b=0;
第一种: $a && $b = 'cccccccc';
第二种 $a || $b = 'cccccccc';
第三种 if($a && $b){
$b = 'cccccccc';
}
echo $b;
谁能说说这个呢?怎么理解呢?

 

最佳答案
 
php中=是赋值, 在if中要判断条件是要用==的
第一种: if($a && $b = 'cccccccc'), 首先判断$a是不是true?返回true, 并且 $b = 'cccccccc'(这其实是赋值,不是判断),也返回true, 所以整个if返回是true, $b = 'cccccccc' 第二种 if($a || $b = 'cccccccc') 2个条是或的关系, 那么首先判断$a是不是true?返回true, 那么直接if返回的就是true, $b = 'cccccccc'这个根本就没有执行, $b=0 第三种 if($a && $b) 首先判断$a是不是true?结果是true; 然后判断$b是不是true?结果是false, 那么if的结果就是false, if的语句不执行. $b=0 在php运行的结果就是:
$a = 1; $b=0;
if($a && $b = 'cccccccc') echo $b; //返回cccccccc $a = 1; $b=0;
if($a || $b = 'cccccccc') echo $b; //返回0 $a = 1;$b=0;
if($a && $b){ $b = 'cccccccc';}
echo $b; //返回0
 
 

其他回答

关于优先级:"||"和"&&"大于"="
所以第一种是先计算$a&&$b 再算赋值
第二种是先$a||$b 但是||符号只要有一个成立就全部成立了,所以当$a不等于0 ,后面的就不会再进行运算了(因为后面无论是否运算都整个值都是成立的)。
第三种是判断,if内是不成立的,所以b的赋值也不会进行。
结果依次为 cccccccc 0 0
 

最新文章

  1. How to implement equals() and hashCode() methods in Java[reproduced]
  2. JNDI
  3. AR For Unity3D之HiAR分析
  4. VTK初学一,比较常见的错误1
  5. sp_who使用
  6. c# 高效率导出多维表头excel
  7. iis设置Gzip后,无后缀的url无法压缩解决 MVC iis GZIP
  8. 如何使用Fiddler调试线上JS代码
  9. webservice发布接口
  10. ./configure详解
  11. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
  12. [Unity3D]Unity3D持久性数据的游戏开发PlayerPrefs采用
  13. jQuery学习笔记(一)--jQuery对象与DOM对象相互转换
  14. [POJ] 1562 Oil Deposits (DFS)
  15. 数据存储之HTTP Cookie
  16. Jmeter二次开发代码(3)
  17. mac上安装iterm2的一些步骤记录
  18. Redis托管Session
  19. [NOI1999] 棋盘分割
  20. bzoj 1879 容斥

热门文章

  1. centos7下更改java环境
  2. The best career advice I’ve received
  3. 模式窗口刷新不弹出新窗口触发NET事件
  4. 将一个query后面的参数转为数组
  5. SET TEXTSIZE number
  6. 【Lamp】 Linux 下安装PHP+Apache+Mysql 手记
  7. Jquery入门指南教程
  8. Ant安装、环境变量配置及验证
  9. Groovy学习笔记(一)
  10. paper 109 :图像处理中的拉普拉斯算子