PHPバージョン
4+
/* 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)
is_null(mixed $value): bool
$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)
$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)
$a; // $aに値が割り当てられていない(初期化されていない)

var_dump(is_null($a)); // true => $aは定義されていない(参照時にUndefined variable警告が発生する可能性あり)
var_dump(is_null($b)); // true => $bは定義されていない(参照時にUndefined variable警告が発生する可能性あり)
$var = null;

/* 状況1:変数が確実に宣言されている場合(is_nullの使用を推奨) */
// 関数の引数として受け取った場合や、上で宣言された変数の値をチェックする際
if (is_null($var)) {
    echo '変数の値が明示的にnullです。';
}

/* 状況2:変数の宣言の有無が不確実な場合 */
// 外部データ($_GET, $_POSTなど)や、条件によって生成される変数をチェックする際
if (!isset($var)) {
    echo '変数が定義されていないか、または値が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;
}