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 함수를 사용하면된다.
'웹프로그래밍 > PHP 일반' 카테고리의 다른 글
PHP로 간단한 로또 시스템 만들기 (550) | 2015.03.07 |
---|---|
한글이든 영문이든 같은 크기로 문자열을 자르는 PHP 함수 만들기 (986) | 2015.03.07 |
PHP에서 이미지의 URL 노출과 다운로드를 막아보자 (2390) | 2015.03.07 |
PHP오류 : Only variable references should be returned by reference (1304) | 2015.03.07 |
PHP 로 파일이름에서 확장자명 알아내기 (1420) | 2015.03.07 |