論理型、真偽値(boolean)
理論型または真偽値はデータの一つになります。
この型はtrueとfalseの二択のみが入ります。
理論型を指定するには、定数tureかfalseを入力します。
両方とも大文字小文字に依存しません。
- 直接入力する場合
<?php
$x = True;
?>
通常は直接trueとfalseを入力することはほぼないです。
理論(bool)型の値を返す演算子(++、--、<、=など)を利用してから、制御構造(if、elseな
ど)に結果を渡します。
なので結果が演算子の結果がtrueかfalseになればその値は理論型になります。
- 例
<?php
$x = 10;
if($x > 5){
echo "結果はtrueです";
}
論理型に明示的に変換するためには、キャスト(bool)または(boolean)を使用します。
意図的にtrueかfalseに変換するということになります。
演算子、関数、制御構造がbool型の引数を必要とする場合には、値は自動的に変換されるため、多くの場合はキャストが不要です。
ifやelseの分岐をする場合は結果が自動的にtrueかfalseの値に変換されるため、(bool)で指定する必要がありません。
bool、理論値に変換される際の法則は下記のとおりとなります。PHPから引用。
boolean の false
integer の 0 および -0 (ゼロ)
float の 0.0 および -0.0 (ゼロ)
空の文字列、 および文字列の "0"
要素の数がゼロである 配列
特別な値 NULL (値がセットされていない変数を含む)
属性がない空要素から作成された SimpleXML オブジェクト。つまり、子要素も属性もない要素です。
その他の値は全て true とみなされます (全ての resource および NAN を含みます)。
警告
-1 は、他のゼロでない数と同様に (正負によらず) true とみなされます。
言い換えると中身のない値はfalseになり、それ以外の何かの値が入っているものがtrueとなります。
なので-1も値としては存在しているためtrueとなります。
コンピューターにとっては0か1か、ONかOFFかのどちらかしか存在しないため上記のような分けかたになります。