PHPで変数がNULLかどうか判定するには、isset、is_null、emptyなどの関数を使用します。
is_null関数の使い方
1 |
boolean is_null(変数) |
指定した変数がNULLであるか変数が宣言されていない場合はtrueを返し、NULL以外の値の場合はfalseを返します。値がfalse、空白、0、でも、返り値はfalseとなります。
変数が未定義である場合も、is_null関数ではtrueとなる点に注意してください。
isset関数の使い方
1 |
boolean isset(変数1, 変数2, 変数3, ...) |
指定した変数が宣言されて存在して、値が設定されていればtrueになります。
値は、空白、0何でも良いので初期化されていればtrueになりますが、変数宣言が無かったり、値がNULLの場合はfalseになります。基本的には、!is_null()と同じ結果となりますが、一部ケースで異なる結果となります。
また、複数の変数を指定することも可能です。複数指定した場合は、全ての変数に値が設定されていればtrueになります。
empty関数の使い方
1 |
boolean empty(変数1) |
NULLやfalse、0、空配列、空文字、未定義の場合にtrueとなります。empty関数の場合は、値が文字列の0「"0"」でもtrueとなるので注意してください。
NULLか否かを判定する時に使用するのは、あまりおすすめできません。
isset、emptyを組み合わせした判定
issetとemptyを組み合わせて判定することで、もう少し厳密な判定処理が行えます。
コード
1 2 3 4 5 6 7 |
if( isset($var) && empty($var) ){ echo '$varは定義済みですが、0、"0"、空文字、空配列、falseのいずれかです'; }else if( !isset($var) && empty($var) ){ echo '$varは未定義またはNULLです。'; }else if ( isset($var) && !empty($var) ){ echo '$varは' ,$var, 'です。'; } |
isset、is_null、emptyなどによる判定は、上記のように複雑なため予期せぬ不具合の原因となりがちなので注意してください。