今天在一个交流群里有个朋友问了个问题,感觉挺有趣的,所以记录下来
下面是他的代码,
<?php
$a=3;
$b=5;
if($a=5 || $b=7) {
$a++;
$b++;
}
echo $a." ".$b;
?>
$a=3;
$b=5;
if($a=5 || $b=7) {
$a++;
$b++;
}
echo $a." ".$b;
?>
问题是:为什么输出结果$a始终为1。
分析一下:
if语句的条件他采用的是赋值的方式,那么此时$a=5恒为true,后面的$b没有影响。
首先在if语句里面echo $a得出$a的值为1,使用is_bool($a)判断出此时$a为布尔型。
而递增递减运算符是不影响布尔值的,$a++还是1,所以最终的输出结果$a为1.
而递增递减运算符是不影响布尔值的,$a++还是1,所以最终的输出结果$a为1.