UPDATE:2020年07月01日
PHP の NULL(ヌル)型 について
- NULL型 は キーワード NULL や null で表す(大文字小文字区別なし)
- NULL型 の種類は 特殊型
- NULL型 の唯一の値は NULL値
- NULL型 と見なされる値
キーワード NULL が代入
unset() されている
値が未代入
- NULL型 のチェックは is_null() 関数 で行う
NULL型とは
- NULL型 は キーワード NULL や null で表す(大文字小文字区別なし)
- NULL型 の種類は 特殊型
- NULL型 の唯一の値は NULL値
NULL型は特殊な型で、NULL型の唯一の値はNULL値です。NULL値は大文字小文字を区別しないキーワード NULL で表します。したがって、NULL Null null はすべて同じです。NULL値とは、ある変数に値が何も代入されていないことを表します。少し分かり難いかもしれまんせが、ある変数が値を持たないことを 明示的に表す値 と考えて見てください。 例えば、$var = ''; の場合は「空という値」が代入されていると評価されます。$var = 0; の場合も「0 という値」が代入されていると評価されます。$var = NULL; は「$var に何も代入されていない」ということを意味しています。
NULL値が代入されたNULL型の変数を作成します。
1 2 3 4 5 | <?php $NULL = NULL; $Null = Null; $null = null; ?> |
これらの変数はすべてNULL型となります。
NULL型と見なされる場合
- NULL型 と見なされる値
キーワード NULL が代入
unset() されている
値が 未代入
変数は、以下の場合に NULL と見なされます。
NULL値が代入
キーワードNULL によって NULL値 が代入されている変数の場合 NULL型 と評価されます。
1 2 3 4 5 | <!-- サンプルコード --> <?php $var = NULL; if(is_null($var) === TRUE) echo 'NULL型です。'; ?> |
結果は
となります。
unset()
unset() されている変数の場合 NULL型 と評価されます。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $var = 'test'; unset($var); if(is_null($var) === TRUE) echo 'NULL型です。'; ?> |
結果は
となります。
unset($var); と $var = NULL; は厳密には異なります。unsetされた変数はPHPが変数管理を行うシンボルテーブルに変数そのものが存在しないことになります。$var = NULL; の場合はシンボルテーブルに $var は存在して NULL という特殊な値が代入されていると評価されます。ですが、nunset($var) とし、isset($var)としたならば、PHPは $var を NULL値 として扱います。
値が未代入
まだ値が何も代入されていない変数の場合 NULL と評価されます。
1 2 3 4 | <!-- サンプルコード --> <?php if(is_null($var) === TRUE) echo 'NULL型です。'; ?> |
結果は
となります。
様々な値をチェックしてみる
キーワード true false 、整数、文字列整数、浮動小数点数、文字列、配列、など様々な値を確認してみましょう。
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 | <?php $var = true; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = false; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = 1; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = 0; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = -1; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = "1"; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = "0"; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = "-1"; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = 0.0; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = "string"; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = ""; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = array(); if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = array('a', 'b', 'c'); if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; $var = NULL; if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; unset($var); if(is_null($var) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; if(is_null($undefine) === TRUE) echo "NULL<br>\n"; else echo "NOT NULL<br>\n"; ?> |
結果は
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NULL
NULL
NULL
となります。
NULL型であるか調べる
- NULL型のチェックは is_null() 関数 で行う
ある値がNULL型かどうか調べるにはis_null()関数を使用します。
1 2 3 4 5 | <!-- サンプルコード --> <?php $var = NULL; if(is_null($var) === TRUE) echo 'NULL型です。'; ?> |
結果は
となります。
bool TRUE か FALSE = is_null(mixed $var);
説明 | 変数のデータ型がヌル型(NULL型)かどうかチェックする | |
---|---|---|
引数 | mixed $var | データ型を調べる変数 |
返り値 | bool | 変数がヌル型(NULL型)の場合:TRUE、変数がヌル型(NULL型)ではない場合:FALSE |
サンプル
1 2 3 4 5 6 7 8 9 | <?php $isNull = null; echo is_null($isNull) ? "ヌル型です。<br>\n" : "ヌル型ではありません。<br>\n"; //ヌル型です。 $notNul = 0; echo is_null($notNul) ? "ヌル型です。<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 | <!-- サンプルコード --> <h3>NULL型</h3> ・NULLキーワードが代入されている<br> <?php $nData = NULL; if(is_null($nData) === TRUE) echo 'NULL型です。'; ?> <br><br> ・unset()されている<br> <?php $nUnSet = 'test'; unset($nUnSet); if(is_null($nUnSet) === TRUE) echo 'NULL型です。'; ?> <br><br> ・まだ値が何も代入されていない(初期化されていない変数)<br> <?php if(is_null($nNull) === TRUE) echo 'NULL型です。'; ?> <br><br> |
・NULLキーワードが代入されている
NULL型です。
・unset()されている
NULL型です。
・まだ値が何も代入されていない(初期化されていない変数)
NULL型です。
タグ(=記事関連ワード)
日付
最終更新日:2020年07月01日