isset, empty, is_nullの違いと使い所

isset, empty, is_nullの違いについて整理します。また、どういったケースで利用すればいいのかについて取り上げます。

目次

isset, empty, is_nullの動作

isset()

変数がセットされており、それが NULL でないことを調べます。
is_null() と反対の結果を返します。

empty()

変数が空(空文字0NULLFALSE空の配列)だったらTRUEそれ以外はFALSEを返します。

is_null()

変数が NULL かどうか調べます。変数が NULL なら TRUE、それ以外は FALSE を返します。
変数が未定義の時も TRUE を返しますが、未定義のチェックは isset() を使ったほうが良いと思います。

違いを整理

それぞれ判定結果は以下のようになります。

関数未定義NULL0“”(空文字)“abc”
issetFalseFalseTrueTrueTrue
emptyTrueTrueTrueTrueFalse
is_nullTrue(Notice)TrueFalseFalseFalse

変数を宣言したが値を設定してない場合はNULLとなります。

$var;
var_dump($var);  // NULL

ですが、Notice: Undefined variableといった警告がでます。
下記のように明示的にNULLを設定するほうが望ましいです。

$var = NULL;
var_dump($var);  // NULL

使い所

isset

$params = parse_url($url);
if (isset($params['query'])) {
    parse_str($params['query']);
}

任意のキーで連想配列が存在するか判定しています。

if (isset($_POST['XXXXX'])) {
    $xxxxx = $_POST['XXXXX'];
}

任意の文字列のPOSTを受けとっているか判定しています。

empty

$sql = "SELECT * FROM table";
if(!empty($cond)) {
    $sql = $sql . " WHERE " . $cond;
}

文字(空文字と0を除く)が設定されているか判定しています。

is_null

function funcXXXX($value = null) {
    if (!is_null($value)) {
        $value = funcYYYY($value);
    }
    return is_null($value);
}

関数の引数値をデフォルトでNULLとしています。
引数がセットされているかどうかをis_nullで判定してます。

$result = funcZZZZ();
if (is_null($diff)) {
     
}

関数の戻り値がNULLであるか判定しています。

よかったらシェアしてね!
目次