定義と使い方
- PHPバージョン
- 4+
is_null()関数は、指定された値が NULL タイプであるかを確認します。引数として渡された値が NULL タイプであれば true を返し、そうでなければ false を返します。
NULLタイプは、変数が定義されていないか、変数に値が割り当てられていないことを表すデータタイプです。また、変数に明示的にnull値を割り当てた場合にもNULLタイプとなります。NULLタイプの値は一つだけで、大文字と小文字を区別しない定数nullです。
タイプを指すNULLや値を指すnullはいずれも大文字と小文字を区別しません。NULLタイプはNullタイプ、nullタイプと同一であり、null値はNull値、NULL値と同一です。
ここでは、タイプと値を便宜上区別するために、タイプは「NULLタイプ」、値は「null値」とすでに表記しており、今後もこのように表記します。
基本例
/* NULLタイプ */
var_dump(is_null(null)); // bool(true) => 大文字と小文字を区別しない
var_dump(is_null(Null)); // bool(true) => 大文字と小文字を区別しない
var_dump(is_null(NULL)); // bool(true) => 大文字と小文字を区別しない
/* 値が割り当てられていない変数 */
$a;
var_dump(is_null($a)); // bool(true) => 値が割り当てられていない変数の値はnull
/* 空文字や空白文字列 */
var_dump(is_null('')); // bool(false)
var_dump(is_null(' ')); // bool(false)
/* 空の配列 */
var_dump(is_null(array())); // bool(false)
var_dump(is_null([])); // bool(false)
/* ブール(boolean) */
var_dump(is_null(true)); // bool(false)
var_dump(is_null(false)); // bool(false)
参考にしてください!gettype()関数は、与えられた値のデータタイプを文字列として返します。
構文
is_null(mixed $value): bool
引数
$value |
必須。NULLタイプを確認する値です。 |
|---|
戻り値
引数として渡された値がNULLタイプであればtrueを返し、そうでなければfalseを返します。
注意点
is_null()関数を使用する際、注意すべき点があります。
空文字とnull値の区別
空文字 ('')や空白文字列 (' ')は文字列タイプと見なされますが、null値ではありません。これに注意して、空文字とnull値を区別して処理する必要があります。
$empty_string = '';
var_dump(is_string($empty_string)); // bool(true)
var_dump(is_null($empty_string)); // bool(false)
$null_value = null;
var_dump(is_string($null_value)); // bool(false)
var_dump(is_null($null_value)); // bool(true)
コードの補足説明is_string() 関数は、指定された値が文字列(string)タイプであるかを確認します。引数として渡された値が文字列タイプであれば true を返し、そうでなければ false を返します。
空の配列とnull値の区別
空の配列([] または array())は配列タイプと見なされますが、null値ではありません。これに注意して、空の配列とnull値を区別して処理する必要があります。
$a = array(); // array()を利用した空の配列
$b = []; // []を利用した空の配列 => PHP 5.4+ 導入
var_dump(is_array($a)); // bool(true)
var_dump(is_array($b)); // bool(true)
var_dump(is_null($a)); // bool(false)
var_dump(is_null($b)); // bool(false)
コードの補足説明is_array() 関数は、指定された値が配列(array)タイプであるかを確認します。引数として渡された値が配列タイプであれば true を返し、そうでなければ false を返します。
初期化されていない、または定義されていない変数の値は null
PHPにおいて、宣言されていない、または値が割り当てられていない変数は「未定義(Undefined)」状態となり、この変数を参照した場合、その値はnullと見なされます。
$a; // $aに値が割り当てられていない(初期化されていない)
var_dump(is_null($a)); // true => $aは定義されていない(参照時にUndefined variable警告が発生する可能性あり)
var_dump(is_null($b)); // true => $bは定義されていない(参照時にUndefined variable警告が発生する可能性あり)
誤解を招く恐れ
is_null()は、変数の値がnullであるかを確認したい場合に、コードの意図を最も明確に示す関数です。ただし、定義されていない変数に使用するとPHP警告(Warning)が発生するため、変数がすでに宣言されていることが確実な状況で、値をチェックする際に使用するのが最も適切です。
もし変数の宣言の有無さえ不確実な状況であれば、警告を発生させない isset() や empty() を活用するほうがより安全です。
補足説明isset() 関数は、変数が宣言されており、かつその値が null ではない場合に true を返します。値が空であっても変数が存在すれば true を返し、変数が宣言されていないか null 値であれば false を返します。
補足説明empty() 関数は、変数が宣言されており、かつその値が空である場合に true を返します。空の値とは、0、''、null、false、array() などといった値を意味します。
$var = null;
/* 状況1:変数が確実に宣言されている場合(is_nullの使用を推奨) */
// 関数の引数として受け取った場合や、上で宣言された変数の値をチェックする際
if (is_null($var)) {
echo '変数の値が明示的にnullです。';
}
/* 状況2:変数の宣言の有無が不確実な場合 */
// 外部データ($_GET, $_POSTなど)や、条件によって生成される変数をチェックする際
if (!isset($var)) {
echo '変数が定義されていないか、または値がnullです。';
}
活用例
is_null()関数は、特定の処理が明示的に nullを返す場合や、特定の値が nullの時のみ特別な動作を行う必要があるといった明示的なケースに有用です。つまり、開発者がコード上で意図的に null値を処理していると認識しやすくするために使用されます。
関数が明示的にnullを返す場合
function getValue($condition) {
if ($condition) {
return null; // 明示的にnullを返して「値がないこと」を表現
}
return 'someValue';
}
$result = getValue(true);
// isset($result)を使うこともできますが、is_nullを通じて「nullチェック」が目的であることを明確に示します
if (is_null($result)) {
echo '関数から明示的にnullが返されました。';
} else {
echo '関数から有効な値が返されました:' . $result;
}
上の例では、getValue()関数が$someConditionに応じて明示的にnullを返す場合を示しています。
関連項目
- PHP isset()関数とempty()関数:概念の整理および使い方と違い
- PHP gettype()関数:変数のデータ型を文字列で確認する
- PHP is_bool()関数:変数の論理型(boolean)を確認
- PHP is_int()関数:変数の整数(integer)型を確認
- PHP is_float()関数:変数の浮動小数点数(float)型確認
- PHP is_numeric()関数:変数の値が数値または数値形式の文字列であるかを確認
- PHP is_string()関数:変数の文字列(string)タイプ確認
- PHP is_array()関数:変数の配列(array)タイプ確認
- PHP is_object()関数:変数のオブジェクト(object)タイプ確認
- PHP is_resource()関数:変数のリソース(resource)タイプ確認
- PHP ctype_digit()関数:文字列がすべて数字であるかを確認