<?php
$a=2;
$b=5;
if($a=3||$b=2){
$a++;
$b++;
}
echo $a,'~~~',$b;
//1,6
//第二题
$a=2;
$b=5;
if($a=3&&$b=2){
$a++;
$b++;
}
echo $a,'~~~',$b;
//1,3
?>
解答:
1:逻辑或运算的"||"运算符 比赋值的"="运算符优先级要高.
2:||运算,是从左到右结合的.
因此, 先计算 5 || ($b=7), 程序只需要执行到"5||",就可以得出该表达式为真,即返回布尔值true
此时 $a的值已经变成布尔值true, 并且$b=7,没执行,仍是5
然后是 $a++; $b++;
须知 , ++,--对于布尔值无效,
因此,$a = true; $b = 6;
echo 出来的效果是1,6,如果你用var_dump打印,就会看到真相.
点评 :如果你在工作中写出这种代码,应该被批量,牵涉到很多表达式运算时,为了清晰,你应该用小括号包起来.
另,学程序为了开发,不要学孔乙已,寻章摘句老雕虫,没有意义.