php TRUEとFALSEについて
2011/03/23
調べごとをしていた際に参考にしたサイトで理解できない内容があった。
ということで先にそれを調べた。
内容はif文で「$A===TRUE」ってのがあった。
よくわからんけど…値が「0」のときは「FALSE」、「1」のときは「TRUE」扱いになるっぽい。
だから、単純に「$A==FALSE」とか「$A==TRUE」にすると値が「0」「1」で何かができなくなる場合がある。例えば、下記のような場合。
- $flag = 0;
- if($flag == FALSE){
- $aaa = "値はFALSE";
- }else if($flag == 0){
- $aaa = "値は0";
- }
- echo $aaa;
- // 出力結果は「値はFALSE」になる。
- // $flagの値が「0」だから「FALSE」って勝手に判断されるらしい。
一覧。
- $flag = 0;
- // ▲の値を色々と変更してみた
- $aaa = "";
- if($flag === FALSE){ $aaa .= "1.「===」でFALSE。” . “\n"; }
- if($flag === TRUE) { $aaa .= "2.「===」でTRUE。” . “\n"; }
- if($flag == FALSE){ $aaa .= "3.「==」でFALSE。” . “\n"; }
- if($flag == TRUE) { $aaa .= "4.「==」でTRUE。” . “\n"; }
- if($flag == 0) { $aaa .= "5.「==」で0。” . “\n"; }
- if($flag === 0) { $aaa .= "6.「===」で0。” . “\n"; }
- if($flag == 1) { $aaa .= "7.「==」で1。” . “\n"; }
- if($flag === 1) { $aaa .= "8.「===」で1。” . “\n"; }
- echo $aaa;
出力結果をまとめたもの。
1行目の設定 | $flagに代入された値 | 出力結果 |
---|---|---|
$flag=0; | 0 | 3.「==」でFALSE。 5.「==」で0。 6.「===」で0。 |
$flag=1; | 1 | 4.「==」でTRUE。 7.「==」で1。 8.「===」で1。 |
$flag=2; | 2 | 4.「==」でTRUE。 |
$flag=NULL; | 3.「==」でFALSE。 5.「==」で0。 |
|
$flag=””; | 3.「==」でFALSE。 5.「==」で0。 |
|
$flag=FALSE; | 1.「===」でFALSE。 3.「==」でFALSE。 5.「==」で0。 |
|
$flag=TRUE; | 1 | 2.「===」でTRUE。 4.「==」でTRUE。 7.「==」で1。 |
$flag=”あ”; | あ | 4.「==」でTRUE。 5.「==」で0。 |
$momo=3; ※[未定義] |
3.「==」でFALSE。 5.「==」で0。 |
条件式に「TRUE/FALSEと0/1の両方を入れると面倒だ」ってことかな…?
ちなみに、「===」は「型と値」が同一かをチェック。