|| 逻辑或, = 赋值运算
|| 是左联运算符,运算顺序是从左向右
= 是右联运算符,运算顺序是从右到左
|| 的运算级比 = 高
所以if语句可以写成
if($a= (5 || $b=5))
|| 有一个短路现象,当左边的运算能转化为true时,不执行右边的运算,5能转化为true
所以if语句进一步写成if($a = (true || $b=5)), (true || $b=5)这里会有一个bool(true)返回值
由于||的短路现象,if再进一步写成if($a = true) 注意$b=5被短路,并没有被执行
echo $a, true会输出1;
$a++, true++ == true;
所以最后输出1,4
因为if($a=5 || $b=5)使$a的类型已变为bool型。bool型只有true和false,又因为把5赋值给$a,所以if判断为true.则$a为true也就是1.你在echo $a.'为什么?
';之前打个var_dump($a);就知道了。又因为$a为bool型,所以你$a++都没用。
if($a=5 || $b=5)
这里应该写成if($a==5 || $b==5),问题是这里引起的