<?php $a = 3; $b = 4;if (($a=5) && ($b=6)) { $a+=1; $b+=1; }echo $a;echo "<br>";echo $b;
输出$a=6;$b=7
。赋值永远为条件真,除非赋值为0。
<?php $a = 3; $b = 4;if (($a=0) && ($b=6)) { $a+=1; $b+=1; }echo $a;echo "<br>";echo $b;
输出$a=0;$b=4
。不执行逻辑与后的内容。
<?php $a = 3; $b = 4;if ($a=5 && ($b=6)) { $a+=1; $b+=1; }echo $a;echo "<br>";echo $b;
输出$a=2;$b=7
。先执行5 && true == true(1);
赋值运算符优先级最低。
<?php $a = 3; $b = 4;if ($a=5 && $b=6) { $a+=1; $b+=1; }echo $a;echo "<br>";echo $b;
输出$a=2;$b=7
。特殊情况,同上(&&后面的内容为最小执行单位)。
<?php $a = 3; $b = 4;if ($a=5 && $b=6) { $a++; $b++; }echo $a;echo "<br>";echo $b;
输出$a=1;$b=7
。重点!$a++ != $a+=1;
,当$a为true时,$a++依然为true(1);不参与数学运算。echo一个true时会输出1,但实际上最终结果应该是$a=true;$b=7;
<?php $a = 3; $b = 4;if ($a=5 || $b=6) { $a++; $b++; }echo $a;echo "<br>";echo $b;
输出$a=1;$b=5
。5为这true不执行$b=6
,所以$a=1;$b=5
。
<?php $a = 3; $b = 4;if ($a=0 || $b=6) { $a++; $b++; }echo $a;echo "<br>";echo $b;
输出$a=1;$b=7
。除0以外的赋值均为true,0赋值相当于false,执行$b=6
,所以$a=1;$b=7
。
作者:琳的小奶狗
链接:https://www.jianshu.com/p/f11c90ead208