$a = null;
$b = NULL;
$c = 'null';
$d;
$e = '';
$f = array();

var_dump(is_null($a)); // true
var_dump(is_null($b)); // true => 대소문자를 구분하지 않음
var_dump(is_null($c)); // false
var_dump(is_null($d)); // true => 값이 할당되지 않은 값은 null임
var_dump(is_null($e)); // false
var_dump(is_null($f)); // false

var_dump(is_null($g)); // true => 정의되지 않은 변수의 값은 null임
is_null(mixed $value): bool
$empty_string = '';
$null_value = null;

var_dump(is_string($empty_string)); // true
var_dump(is_null($empty_string)); // true

var_dump(is_string($null_value)); // false;
var_dump(is_null($null_value)); // true;
$a = array(); // array()를 이용한 빈 배열
$b = []; // []를 이용한 빈 배열 => PHP 5.4+ 도입

var_dump(is_array($a)); // true
var_dump(is_array($b)); // true

var_dump(is_null($a)); // false
var_dump(is_null($b)); // false
$a; // $a에 값이 할당되어 있지 않음(초기화되 않았음)

var_dump(is_null($a)); // true
var_dump(is_null($b)); // true => $b는 정의되어 있지 않음
$var = null;

/* 방법 1 : is_null() 함수와 === 연산자 활용 */
if (is_null($var) && $var === null) {
    echo '변수가 선언되어 있고 값이 null입니다.';
} else {
    echo '변수는 선언되지 않았거나 값이 null이 아닙니다.';
}
// 출력: '변수가 선언되어 있고 값이 null입니다.'

/* 방법 2 : empty() 함수와 === 연산자 활용 */
if (empty($var) && $var === null) {
    echo '변수가 선언되어 있고 값이 null입니다.';
} else {
    echo '변수는 선언되지 않았거나 값이 null이 아닙니다.';
}
// 출력: '변수가 선언되어 있고 값이 null입니다.'
function getValue() {
    if ($someCondition) {
        return null; // 명시적으로 null을 반환
    } else {
        return "someValue";
    }
}

$result = getValue();

if (is_null($result)) {
    echo "함수에서 null을 반환했습니다.";
} else {
    echo "함수에서 유효한 값을 반환했습니다: " . $result;
}
$userName = getUserInput();

if (is_null($userName)) {
    echo "사용자 이름이 입력되지 않았습니다.";
} else {
    echo "사용자 이름: " . $userName;
}