加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_梅州站长网 (https://www.0753zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP短路运算符

发布时间:2022-10-13 12:32:58 所属栏目:PHP教程 来源:
导读:  先看一段代码

  $a = 5; $b = 20;
  if ($a = 10 || $b = 7) {
   $a++;
   $b++;
  }
  echo $a,"\n","",$b; //1 21
  刚开始接触可能一眼看过去很容易说出最后的输出是5 20 但是
  先看一段代码
 
  $a = 5; $b = 20;
  if ($a = 10 || $b = 7) {
      $a++;
      $b++;
  }
  echo $a,"\n","",$b; //1 21
  刚开始接触可能一眼看过去很容易说出最后的输出是5 20 但是仔细看后()里的条件表达式是赋值操作,所以应该输出11 21.但是计算机和我们开了一个并不好笑的玩笑。她妹的,最后竟然输出的是1 21。
 
  计算机的思路和人脑的思路是有区别的,在编程的时候必须了解计算机的思维模式:机械式的思维模式。我们人在判断这个逻辑表达式的时候会跳跃性的先对$a和$b赋值,然后再做与运算,这样做虽然不影响逻辑运算的结果,但是也会产生上面这种副作用。事实上,计算机为了节省资源,采取了短路运算的方式解释这个逻辑表达式。当他发现与运算符的前一个数值(例如$a)是false时,他就会判断这个与运算表达式的运算结果是false,然后跳出这个逻辑运算表达式,继续执行下面的程序,而不会执行表达式剩下的语句。
 
  至于这里为什么$a的值是1? 是因为在条件表达式的时候$a = 10的操作的时候php会把$a转换成boolean。上面的例子中$a = 10即转换成了true.所以在{}中的$a++ 是不能进行加法运算的。但是如果花括号中的$a++换成$a = $a + 1 那么此时就可以进行数值运算了。
 
  短路运算的精髓就是
 
  逻辑与(&&)->检查运算符第一个表达式是否为false,如果false直接返回falsePHP运算符,后续的表达式直接忽略。
 
  逻辑或(||)->检查运算符第一个表达式是否为true,如果是true直接返回true,后续表达式直接忽略。
 
  PS:&&的优先级高于and、||的优先级高于or、等号(=)的优先级高于and和or
 
  补充
 
  php
  //以上例程的输出类似于:
  bool(true)
  bool(false)
  bool(false)
  bool(true)
 

(编辑:云计算网_梅州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!