UPDATE:2020年07月06日
PHP の 論理型(boolean) について
1 Minute Note
- 論理型 とは 真 偽 を表す 論理値 の型
- 論理型 の値(論理値)は キーワード(定数) TRUE か FALSE のどちらかしかありません(大文字小文字区別なし)
- 論理型 の種類は スカラー型
- FALSE と見なされる値
表示なし
キーワード FALSE | false
整数 0 と -0
浮動小数点 0.0 と -0.0
空の文字列 " "
空の文字列 ' '
文字列 "0" (文字列としての0)
要素数が 0 の配列 $ary = array();
プロパティーやメソッドを含まない空のオブジェクト
NULL値
値が定義されていない変数
- FALSE 以外は全て TRUE
- 論理型 のチェックは is_bool() 関数 で行う
論理型とは
- 論理型 とは 真 偽 を表す 論理値 の型
- 論理型 の値(論理値)は キーワード(定数) TRUE か FALSE のどちらかしかありません(大文字小文字区別なし)
- 論理型 の種類はスカラー型
論理型(boolean) とは、「何かが真であるか、或いは、真でないか=偽」を表す値である 論理値を示す型 のことです。論理値 の データ型 が論理型です。論理値 はキーワード(定数) TRUE または FALSE のどちらかになります。つまり、キーワード TURE FALSE の型が 論理型 となります。キーワード TRUE FALSE に大文字小文字の区別はありません。論理値についてはこちらを参照下さい。PHPでは、キーワード TRUE や FALSE に加え、TRUE や FALSE と見なす値についての決まりがあります。
FALSE と見なす値
PHPにより FALSE と見なされる値は、空の文字列や整数の0などです。空の文字列「""」(シングルクォートで囲む)のデータ型は文字列型ですが、同時にPHPから FALSE と見なされます。PHPでは、論理型を求める関数や演算子、制御構造(if文など)がありますが、これらの引数の値は論理型に自動で変換(キャスト)されます。その際、その値が、FALSE と見なされるのかどうかで判定されます。
- 表示なし
- キーワード FALSE
- 整数 0 と -0
- 浮動小数点 0.0 と -0.0
- 空の文字列 "" や ''
- 文字列としての0 "0"
- 要素数が 0 の配列 $aValue= array();
- プロパティーはメソッドを含まない空のオブジェクト
- NULL値
- 値が定義されていない変数
TRUE と見なす値
- FALSE 以外は全て TRUE
PHP から TRUE と見なされる値は、FALSE 以外すべての値となります。
論理型への変換(キャスト)
上記でも説明しましたが、関数や演算子、制御構造(条件文など)などのが 論理型 の引数を必要とする場合があります。例えば、or や and などの論理演算子、if文 などの 制御構造(条件文など) などです。その際、多くのケースで値は自動的に論理型に変換(キャスト)されます。論理型に変換される場合、以下の値はすべて FALSE と見なされます。それら以外は TRUE と見なされます。
- 表示なし
- キーワード FALSE
- 整数 0 と -0
- 浮動小数点 0.0 と -0.0
- 空の文字列 "" や ''
- 文字列としての0 "0"
- 要素数が 0 の配列 $aValue= array();
- プロパティーはメソッドを含まない空のオブジェクト
- NULL値
- 値が定義されていない変数
例えば、if文は論理値を評価します。そのため評価する値として論理型の値が必要です。
以下の例では空の文字列を定義した変数 $string を if文 で評価してみます。
1 2 3 4 | <?php $string = ''; if($string) {echo 'TRUEです。';}else{echo 'FALSEです。';} ?> |
結果は
となります。
これは、変数 $string が FALSE と見なされ、評価されているのです。つまり、$string は、論理型の値である FALSE に 自動で変換(キャスト)されているのです。
変数に文字列を代入してみます。この場合は $string は、TRUE と見なされます。
1 2 3 4 | <?php $string = '文字列'; if($string) {echo 'TRUEです。';}else{echo 'FALSEです。';} ?> |
結果は
論理型であるか調べる
- 論理型のチェックは is_bool() 関数 で行う
ある値が論理値かどうか調べるにはis_bool()関数を使用します。
1 2 3 4 5 | <!-- サンプルコード --> <?php $bTrue = TRUE; if(is_bool($bTrue ) === TRUE) echo '論理型です。'; ?> |
結果は
となります。
bool TRUE か FALSE = is_bool(mixed $var);
説明 | 変数のデータ型が論理型かどうかチェックする | |
---|---|---|
引数 | mixed $var | データ型を調べる変数 |
返り値 | bool | 変数が論理型の場合:TRUE、変数が論理型ではない場合:FALSE |
サンプル
1 2 3 4 5 6 7 8 9 | <?php $isBool = TRUE; echo is_bool($isBool) ? "論理型です。<br>\n" : "論理型ではありません。<br>\n"; //論理型です。 $notBool = 'abc'; echo is_bool($notBool) ? "論理型です。<br>\n" : "論理型ではありません。<br>\n"; //論理型ではありません。 ?> |
データ型の種類
- PHPの8つのデータ型:
- PHPの3のデータ種類:
データ型の表
型名 | 種類 | 例 | |
---|---|---|---|
文字列型 | string | スカラー型 | 'Hello World!!' "我思う、ゆえに我あり" |
整数型 | integer | スカラー型 | 1、2020、-588、+98 8進数 16進数 |
浮動小数点数型 | float(double) | スカラー型 | 1.4142、-0.18 |
論理型 | boolean | スカラー型 | TRUE | FALSE (true false) (大文字・小文字を区別しない) |
配列型 | array | 複合型 | array('name','address') |
オブジェクト型 | object | 複合型 | $oObj = new ClassName(); |
リソース型 | resource | 特殊型 | resource |
ヌル型 | null | 特殊型 | NULL | null | Null (大文字・小文字を区別しない) |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | <!-- サンプルコード --> <h3>論理値 TRUE</h3> キーワードTRUEの評価: <?php if(TRUE) echo 'TRUEと見なされます。'; if(is_bool(TRUE)) echo 'TRUE論理値です。'; ?> <br> 文字列 真 の評価: <?php if('真') echo 'TRUEと見なされます。'; if(is_bool('真')) echo 'TRUE論理値です。'; ?> <br> 数値100の評価: <?php if(100) echo 'TRUEと見なされます。'; if(is_bool(100)) echo 'TRUE論理値です。'; ?> <br> 式の評価: <?php if((10+10) == 20) echo 'TRUEと見なされます。'; if(is_bool($i)) echo 'TRUE論理値です。'; ?> <br> <h3>論理値 FALSE</h3> キーワードFALSEの評価: <?php if(FALSE) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool(FALSE)) echo 'FALSE論理値です。'; ?> <br> 0の評価: <?php if(0) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool(0)) echo 'FALSE論理値です。'; ?> <br> 空""の評価: <?php if("") echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool("")) echo 'FALSE論理値です。'; ?> <br> 0.0の評価: <?php if(00.) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool(0.0)) echo 'FALSE論理値です。'; ?> <br> 空の配列array()の評価: <?php if(array()) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool(array())) echo 'FALSE論理値です。'; ?> <br> 空のオブジェクトの評価: <?php class EmptyObject{ } $oObj = new EmptyObject; $oObj = null; if($oObj) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool($oObj)) echo 'FALSE論理値です。'; ?> <br> null値の評価: <?php if(null) echo 'TRUEと見なされます。';else echo 'FALSEと見なされます。'; if(is_bool(null)) echo 'FALSE論理値です。'; ?> <br> |
タグ(=記事関連ワード)
日付
最終更新日:2020年07月06日