정의 및 사용 방법
- 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 값 구분
$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 값 구분
$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입니다.';
}
활용 예제
함수가 명시적으로 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 var_dump() 함수 – 변수의 타입·길이·값까지 출력
- PHP print_r() 함수 – 변수의 정보을 사람이 읽기 쉽게 출력
- 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() 함수 - 문자열이 모두 숫자인지 확인