[PHP] 변수가 값을 가지고 있는지 확인 하는 방법 feat. empty

문제

#PHP 개발을 하면서 #if 문을 이용해 #변수에 값이 있는지 확인하고 값이 있는 경우에 특정 코드를 실행하는 경우가 많이 있습니다.

그런데 적지 않은 확률로 #undefined variable 오류 메시지를 보는 경우가 많아서 해당 변수에 값이 있는지 확인 하기 위해서는 아래의 두 과정이 필요합니다.

  1. 변수가 선언되어 있는지
  2. 변수가 값을 가지고 있는지

위 과정이 어떻게 진행되는지 정리해봅니다.

솔루션

위 과정을 진행 하는 방법은 간단합니다. 아래와 같이 if 문에서 두 조건을 확인 하면 되죠.

if ( isset( $var ) and $var ) :
    // 실행할 코드
endif;

$var 라는 변수가 선언되어 있는지 #isset 함수를 이용해 확인하고 #and 조건으로 묶어서 변수에 값이 있는지 확인 한 후 코드를 실행 합니다.

그런데 매번 이렇게 두번 체크하기 상당히 번거롭죠. #empty 함수가 이 번거로움을 해결해 줍니다.

empty

PHP.net 에서 empty 함수에 대한 설명을 보면 아래와 같이 나와 있습니다.

A variable is considered empty if it does not exist or if its value equals FALSE.

empty, php.net

여기서 중요한 부분은 변수가 존재 하지 않거나(if it does not exist) 변수가 FALSE 에 상응하는 값(0, 빈칸 등)을 가지고 있으면 empty 함수가 TRUE 를 반환한다는 것입니다.

다시 말해서 변수가 선언된 상태로 FALSE 에 상응하는 값을 가지고 있지 않다면 empty 함수는 FALSE 를 반환한다는 것입니다. 그렇다면 우리는 위에서 언급한 코드를 아래와 같이 간단하게 작성할 수 있습니다.

if ( ! empty( $var ) ) :
    // 실행 할 코드
endif;

이 코드는 정확히 위 코드와 같은 기능을 합니다. $var 변수가 선언된 상태로 값을 가지고 있으면 empty 함수가 FALSE 를 반환하게 때문에 앞에 ! 를 넣어서 부정형으로 만들어주면 결국은 “empty 함수가 FALSE 라면” 이라는 조건문이 만들어지는거죠.

이상으로 조금 더 간편하게 변수가 값을 가지고 있는지 empty 함수를 이용해 확인하는 방법을 알아보았습니다.

주의사항

  • 만약 변수가 0 값을 가지고 있는데, 이 0이라는 값이 의미가 있는 값이라면 empty 함수 사용에 주의할 필요가 있습니다.

참고자료