블로그 프로필 이미지

2015. 3. 7. 22:30
SMALL



PHP에서 변수가 있는지 또는 값이 들어있는지 확인할 수 있는 isset 함수와 empty 함수가 있다. isset 함수 같은 경우 변수가 존재하면 true 그렇지 않으면 false 를 리턴한다. empty 함수는 변수에 아무값도 들어있지 않을때 true 값을 그렇지 않으면 false 값을 리턴한다. 즉 empty 함수는 변수값 뿐만 아니라 변수가 존재 하지 않아도, true 값을 리턴한다.


isset 함수와 empty 함수는 아래와 같은 인자값들을 받는다.


 isset 함수


변수가 존재하면 true, 그렇지 않으면 false return 한다.


 empty 함수


변수의 값이 0  또는 null 값이라면 true, 값이 존재한다면 false return 한다.


이 두개의 함수는 워낙 많이 쓰는 함수라서, 잘 알고 있겟지만, empty 함수를 조심해야한다. 그이유는empty 함수는 변수가 존재하지 않아도 true 를 return 해주기 때문에 isset 대신 사용할 때가 많다. 하지만 별다른 생각없이 쓰다보면 아래와 같은 예제처럼 잘못된 결과를 불러 올 수 있다.


 소스코드


<?php
/*
입력폼에서 아래와 같은 post 변수가 넘어왔다고 가정
$_POST['user_number']=0;
*/
if(!empty($_POST['user_number']))
{
    $user_info='기존 유저';
}
else
{
$user_info='새로운 유저';
}
echo $user_info;
?>


 결과


새로운 유저

  

위의 소스코드를 보면 원래의 목적은  post 변수의 user_number 키값이 존재할 경우 user_info 변수에다가는 기존유저라는 값을 넣어주는것이다. 하지만 empty 함수를 써버리면, puser_number 라는 키값이 존재하더라도, 키값에 해당되는 값이 0 이기 때문에 true 를 return 하게 된다. 위의 if 조건문에서는 원래의 목적인 기존유저가 아닌 새로운 유저라는 값이 나오게 된다. 올바른 결과값을 얻기 위해선 아래와같이 isset 함수로 변경하여야한다.


 소스코드


<?php
/*
입력폼에서 아래와 같은 post 변수가 넘어왔다고 가정
$_POST['user_number']=0;
*/
if(isset($_POST['user_number']))
{
    $user_info='기존 유저';
}
else
{
$user_info='새로운 유저';
}
echo $user_info;
?>


결과


기존 유저


만약 isset 함수와 empty 함수의 사용법이 헷갈릴경우엔 함수의 기본 정의을 생각하면된다. 그이유는 isset 함수의 정의는 변수가 있는지를 확인하는 것이고, empty 함수는 함수명 뜻그대로 비었는지를 확인하는 함수이다. 


즉 다시 말해 변수가 선언이 되어 값이 null 또는 false 가 아닐 시에는 isset 함수를 사용하고, 변수의 존재유무를 신경쓰지않고 값이 존재하는지 확인할때는 empty 함수를 사용하면된다.   





LIST