这几天常看到微博上转发的一条微博:就做了下,竟做错了,所以就试着分析了下~~
这是微博:
这是代码:
1 <?php 2 $c = 3; 3 $b = 6; 4 if ($c = 4 || $b = 4) { 5 $c++; 6 $b++; 7 } 8 echo $c . $b; 9 echo "<hr />"; 10 /** 11 答案为17 12 这边赋值运算符优先级低于||,所以可以理解为if($c= (4 || $b=4)){} 13 */ 14 $c = 3; 15 $b = 6; 16 if ($c = 4 or $b = 4) { 17 $c++; 18 $b++; 19 } 20 echo $c . $b; 21 echo "<hr />"; 22 /** 23 答案为57 24 这边赋值运算符优先级高于or,所以可以理解为if(($c= 4) ||($b=4)){} 25 */ 26 $a = true; 27 echo $a++; 28 echo "<hr />"; 29 /** 30 答案为1 31 这边还不懂为何$a++,和$a=$a+1 两种表达为何输出答案不同 32 */ 33 $a = true; 34 echo $a = $a + 1; 35 /** 36 答案为2 37 这边还不懂为何$a++,和$a=$a+1 两种表达为何输出答案不同 38 */ 39 ?>
总结:1:能用括号尽量用,除非能保证语法不会出错,优先级 && 大于 || 大于 = 大于 and 大于 or
2:用||时,如果第一个条件成立,剩下的条件的不用执行,用&&时第一个错误,剩下的条件不用执行
3:$a=true 时,执行$a++时还是1,这个在条件判断时比较会碰到,必须要注意