PHP基礎トラップ問題(変数付与)

802 ワード

 
  
$a=3;
$b=6;
if($a=5||$b=7){
$a++;
$b++;
}
var_dump($a, $b);

落とし穴1
$a=5、$b=7を$a=5、$b=7と見なした
エラー結果:3,6
トラップ2
演算子の優先度、$a=5賦値成功$b=7実行なし
エラー結果:6,7
正しく理解する
トラップは演算子の優先であり、代入演算子(=)の優先度は最も低いので、正しく理解するには
$a=(5||$b=7)
正しい結果:true,7
アップグレードして
変形1
 
  
$a=3;
$b=6;
$c=1;
if($a=5||$b=7 && $c=10){
$a++;
$b++;
}
var_dump($a, $b,$c);

変形2
 
  
$a=3;
$b=6;
$c=1;
if($a=0||$b=7 && $c=10){
$a++;
$b++;
}
var_dump($a, $b,$c);

興味のある学生は考えてみてください:)