<?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
。
网友评论