php TRUEとFALSEについて

2011/03/23

調べごとをしていた際に参考にしたサイトで理解できない内容があった。
ということで先にそれを調べた。

内容はif文で「$A===TRUE」ってのがあった。
よくわからんけど…値が「0」のときは「FALSE」、「1」のときは「TRUE」扱いになるっぽい。
だから、単純に「$A==FALSE」とか「$A==TRUE」にすると値が「0」「1」で何かができなくなる場合がある。例えば、下記のような場合。

  1. $flag = 0;
  2. if($flag == FALSE){
  3.  $aaa = "値はFALSE";
  4. }else if($flag == 0){
  5.  $aaa = "値は0";
  6. }
  7. echo $aaa;
  8. // 出力結果は「値はFALSE」になる。
  9. // $flagの値が「0」だから「FALSE」って勝手に判断されるらしい。

一覧。

  1. $flag = 0;
  2. // ▲の値を色々と変更してみた
  3.  
  4. $aaa = "";
  5.  
  6. if($flag === FALSE){ $aaa .= "1.「===」でFALSE。” . “\n"; }
  7. if($flag === TRUE) { $aaa .= "2.「===」でTRUE。”  . “\n"; }
  8. if($flag ==  FALSE){ $aaa .= "3.「==」でFALSE。”  . “\n"; }
  9. if($flag ==  TRUE) { $aaa .= "4.「==」でTRUE。”   . “\n"; }
  10. if($flag ==  0)    { $aaa .= "5.「==」で0。”      . “\n"; }
  11. if($flag === 0)    { $aaa .= "6.「===」で0。”     . “\n"; }
  12. if($flag ==  1)    { $aaa .= "7.「==」で1。”      . “\n"; }
  13. if($flag === 1)    { $aaa .= "8.「===」で1。”     . “\n"; }
  14. 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の両方を入れると面倒だ」ってことかな…?

ちなみに、「===」は「型と値」が同一かをチェック。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい