#はじめに
この記事はphpにおける論理値についてまとめたものです。
ノリで映画みたいなタイトルをつけてみましたが当たり前のことを当たり前にまとめただけなので、
対象読者はプログラミング初級者、又は死ぬほど暇なエンジニアの方になります。
#まずはテスト
さっそくですが、みなさん下記処理の結果はわかりますか?
$function = '';
if($function):
echo 'おはよう';
endif;
if(!empty($function)):
echo 'こんにちわ';
endif;
**「両方とも$functionが定義されていればifの中の処理を実行するだろう」と思った方は本記事必読です。
ちなみに答えは「何も出力されない」**です。
#論理値とは
まずは論理値ってなんやねんという人のために。
論理値 とは、「何かが真であるか、真でないか(偽であるか)」を表す値のことです。ブール(bool)値 とも言われます。又、論理値 のデータ型は 論理型 となります。論理型 は、ブール(bool)型、ブーリアン型(Boolean)とも言われます。
ちなみに、PHPの 論理値 は キーワードの TRUE (真)と FALSE (偽)です。キーワードとして予め TRUE と FALSE がPHPで用意されています(このようなワードを予約語と言います)。大文字小文字は区別しません。true false でも同じ意になります。
なんとなく論理値に関しては上記引用でご理解いただけたかと思いますが、ここで厄介なのが
phpにおいてTRUE(真)やFALSE(偽)と見なされる値があり、それらには決まりがあるということです。
#FALSEとみなされる値
キーワードFALSEと同じ偽と見なされる値。
表示なし
キーワード FALSE
整数 0
浮動小数点 0.0
空の文字列 " "
空の文字列 ' '
文字列 '0' (文字列としての0)
要素数が 0 の配列 $ary = array();
プロパティーやメソッドを含まない空のオブジェクト
NULL値
はい、最初に提示させていただいたテスト問題。
$function = '';
if($function):
echo 'おはよう';
endif;
if(!empty($function)):
echo 'こんにちわ';
endif;
もうご理解いただけたかと思いますが、**空の文字列 ' '**はphpにおいてはFALSEとして扱われるのですね。
そしてif文、empty関数は、条件式の結果が 真 であるか 偽 であるかによって処理を分岐させます。
なので分岐処理を行わず、「おはよう」「こんにちわ」が出力されなかったのです。
ややこしいですねぇ。。
ちなみに私は論理値に関して理解するまで「こんにちわ」が出力されると思っていました、お恥ずかしい。。
#TRUEとみなされる値
FALSE 以外のすべて
こちらは非常にシンプルで分かりやすいですね。
if(1):
echo 'おはよう';
endif;
if('真です'):
echo 'こんちにわ';
endif;
出力される内容は「おはようこんにちわ」です。
#おわりに
はい、またも30分で調べた内容を書き殴らせていただきました。
論理値は分かっているようで分かっていない人が多いと思いまとめさせていただきました。
疲れたマン。