[PHP]簡易比較でおちいりやすい罠

Read More

最近、人が作ったソースコードをいじくりまくることが多いシラサヤです。


今日は簡易比較("=="のことね)についてのメモを残しておく。


今回使う簡易比較の式は以下のもの。

■簡易比較の式
<?php
if($num=='') {
  echo 'true';
}// end if
?>


うーんシンプル。


このような式があった時、
変数$numの値がどんな時にtrueになるのかを以下に記す。


■trueになるもの
$num='';
$num=0;
$num=false;
$num=null;
unset($num);


上記のものは全てtrueになる。


えっ?て思った人は基礎を読み直すことをお勧めする。


また、上記の$numは以下の式の時も全てtrueとなる。

■簡易比較の式 その2
<?php
if($num=='') echo 'true';
if($num==0) echo 'true';
if($num==false) echo 'true';
if($num==null) echo 'true';
if(empty($num)) echo 'true';
?>


え?簡易比較じゃないのが最後に混じってるって?
はは、細かいこと気にするな。


PHP歴3年に満たないヤツが上のをわかってないのはまだ許そう。

それ以上の年数を経過していて理解していないは絶対許さない。



なんてな。






- 2012/04/05 追記 -
変数$numが配列の時のパターンを書くの忘れてた。

以下のif文は全てtrueになる。

■trueになる比較式
<?php
$num=array();
if($num==false) echo 'true3';
if($num==null) echo 'true4';
if(empty($num)) echo 'true5';
?>







おまけ。


先述したのものを踏まえるとわかると思うが、
こんなものもtrueになる。

<?php
if(array()==false) echo 'true6';
?>






--
[PHP]簡易比較でおちいりやすい罠_その2
http://xirasaya.com/?m=detail&hid=289

[PHP]簡易比較でおちいりやすい罠_その3
http://xirasaya.com/?m=detail&hid=521