手记

PHP有趣的题目,关于运算符优先级

<?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

0人推荐
随时随地看视频
慕课网APP