復制代碼 代碼如下:
<?php
$a=3;
$b=6;
if($a=5||$b=7){
$a++;
$b++;
}
var_dump($a, $b);
陷阱一
把$a=5、$b=7看成了$a==5、$b==7
錯誤結果:3,6
陷阱二
運算符的優先級,認為$a=5賦值成功$b=7沒執行
錯誤結果:6,7
正確理解
陷阱是運算符的優先,賦值運算符(=)的優先級是最低的,所以正確理解應該是
$a=(5||$b=7)
正確結果:true,7
升級一下
變形一
復制代碼 代碼如下:
$a=3;
$b=6;
$c=1;
if($a=5||$b=7 && $c=10){
$a++;
$b++;
}
var_dump($a, $b,$c);
變形二
復制代碼 代碼如下:
$a=3;
$b=6;
$c=1;
if($a=0||$b=7 && $c=10){
$a++;
$b++;
}
var_dump($a, $b,$c);
有興趣的同學可以思考一下:)