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;
}