현재 위치: > 최신 기사 목록> PHP의 isset(),empty(), is_null() 함수에 대한 자세한 설명과 차이점

PHP의 isset(),empty(), is_null() 함수에 대한 자세한 설명과 차이점

M66 2025-10-22

PHP 변수의 정의되지 않은 값과 null 값 이해

변수는 PHP를 사용하여 개발된 거의 모든 프로그램의 핵심 구성 요소입니다. 대부분의 경우 변수에는 초기 값이 있지만 일부 변수는 초기화되지 않아 PHP에서 "정의되지 않은 변수" 경고가 발생할 수 있습니다.

변수는 다양한 이유로 정의되지 않을 수 있습니다. 예를 들어 변수가 전혀 선언되지 않았거나, 오타가 있거나, 변수가 조건부로 정의된 경우입니다. 또한 변수 값이 NULL일 수 있는데, 이는 변수가 초기화되지 않았거나 함수가 일부 상태를 나타내기 위해 null 값을 반환했음을 나타낼 수 있습니다.

변수를 사용하기 전에 변수가 정의되어 있는지 또는 비어 있는지 확인하는 것이 중요합니다. PHP는 이러한 상황을 처리하기 위해 isset(), empty() 및 is_null() 세 가지 함수를 제공합니다.

기능 정의 개요

먼저 이 세 가지 기능의 기본 용도를 이해해 보겠습니다.

isset(): 변수가 선언되었으며 NULL이 아닌지 확인합니다.

empty(): 변수가 존재하고 값이 false(0, 빈 문자열, NULL 등 포함)가 아닌지 확인합니다.

is_null(): 변수의 값이 NULL인지 확인합니다.

isset()과empty()의 비교

isset()은 변수가 정의되어 있고 NULL이 아닌 경우 true를 반환하고, 변수 값이 0이거나 빈 문자열이거나 false인 경우에도 true를 반환합니다. 그리고 empty()는 변수 값이 0, 빈 문자열 "", 문자열 "0", 빈 배열, NULL 또는 false를 포함하여 "거짓 값"인 경우 true를 반환합니다.

둘은 모두 언어 구조이고 변수 함수를 통해 호출할 수 없다는 점에서 유사합니다.

<?php
$fruit = '';
if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// Output:  Do you like ?

if(!empty($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output
?>

실제로, empty()는 논리 연산과 결합된 isset()을 사용하여 구현할 수 있지만 일반적으로 내장된 empty() 함수를 직접 사용하는 것이 더 간결합니다.

<?php
function my_empty($x) {
  return !isset($x) || $x == false;
}
?>

isset()과 is_null()의 차이점

is_null()은 변수가 명시적으로 NULL로 설정되면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 그리고 isset()은 변수가 정의되어 있고 NULL이 아닌 한 true를 반환합니다.

<?php
$fruit = NULL;
if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output

if(is_null($fruit)) {
    echo 'There is no fruit.';
}
// Output: There is no fruit.
?>

empty()와 is_null()의 차이점

empty()는 변수 값이 빈 문자열, NULL, 정수 0 또는 빈 배열을 포함하여 "거짓 값"인 경우 true를 반환하는 반면, is_null()은 변수 값이 NULL인 경우에만 true를 반환합니다.

<?php
$person = [
    'first_name' => &#39;몬티&#39;,
    &#39;성&#39; => &#39;&#39;,
    &#39;나이&#39; => &#39;83&#39;,
    &#39;fav_movie&#39; => NULL
];

if(empty($person[&#39;last_name&#39;])) {
    if(is_null($person[&#39;last_name&#39;])) {
        echo &#39;성이 NULL로 설정되어 있습니다.&#39;;
    } 또 다른 {
        echo &#39;성은 아마도 빈 문자열일 것입니다.&#39;;
    }
}
// 출력: 성은 아마도 빈 문자열일 것입니다.

if(is_null($person[&#39;fav_movie&#39;])) {
    $person[&#39;first_name&#39;]을 에코하세요.&#39; 좋아하는 영화를 지정하지 않았습니다.&#39;;
}
// 출력: Monty는 좋아하는 영화를 지정하지 않았습니다.
?>

더 깨끗하고 안전한 코드를 작성하기 위한 몇 가지 팁은 다음과 같습니다.

여러 변수를 isset()에 한 번에 전달하여 해당 변수가 모두 정의되어 있고 NULL이 아닌지 확인할 수 있습니다.

빈 문자열이나 false를 NULL로 잘못 해석하는 것을 방지하려면 ==를 사용하여 NULL을 확인하지 마세요.

요약

이 기사에서는 PHP에서 isset(),empty() 및 is_null()의 사용법과 차이점을 자세히 분석합니다. 차이점을 이해하면 개발자가 변수 상태를 보다 정확하게 처리하고 코드 안정성과 가독성을 향상시키는 데 도움이 됩니다.