bool isset ( mixed $var [, mixed $var [, $... ]] )
(PHP 4, PHP 5)

isset은 값이 존재하는지 체크하고, empty 는 값이 비어 있는지 체크합니다. isset 은 변수나, 객체만을 체크하고, 여러 변수가 주어지면 순서는 왼쪽에서 오른쪽으로 체크합니다.

<?php
 // $var는 변수를 정의한 것으로 판단합니다.
 $var = '';
 if (isset($var)) {
      echo "이 변수는 설정되었으므로 출력합니다.";
 }
 // 결과: 이 변수는 설정되었으므로 출력합니다.


 // 다음은 isset()의 반환값입니다.
 $a = "test";
 $b = "anothertest";
 var_dump(isset($a));     
 // 결과: true
 var_dump(isset($a, $b)); 
 // 결과: true


 unset ($a);
 // $a 변수를 지웠으므로 false
 var_dump(isset($a));     
 // 결과: false

 // 여러 변수일 경우, 왼쪽에서 오른쪽 순으로 체크하는데,
 // $b 변수가 있어도 $a 변수값은 비어 있으므로 false,
 // $a 변수가 있고, $b 변수가 비어 있어도 false입니다.
 var_dump(isset($a, $b)); 
 // 결과: false


 $foo = NULL;
 var_dump(isset($foo));   
 // 결과: false
 ?>

<?php
 $a = array ('test' => 1, 'hello' => NULL);

 var_dump(isset($a['test'])); // 결과: true
 var_dump(isset($a['foo'])); // 결과: false
 var_dump(isset($a['hello'])); // 결과: false

 // 'hello' 키는 NULL이기에 정의되지 않은 것으로 판단합니다.
 // NULL 키를 확인하려면 array_key_exists 함수를 사용하면 됩니다.
 // 이 함수는 키값을 확인합니다.
 var_dump(array_key_exists('hello', $a)); // 결과: true
 ?>

다음은 자료형 비교입니다.

<?php
 $x = null;
 var_dump(isset($x)); // 결과: false

 $x = "";
 var_dump(isset($x));  // 결과: true

 $x = array();
 var_dump(isset($x));  // 결과: true

 $x = false;
 var_dump(isset($x));  // 결과: true

 $x = true;
 var_dump(isset($x));  // 결과: true

 $x = 1;
 var_dump(isset($x));  // 결과: true

 $x = 42;
 var_dump(isset($x));  // 결과: true

 $x = 0;
 var_dump(isset($x));  // 결과: true

 $x = -1;
 var_dump(isset($x));  // 결과: true

 $x = "1";
 var_dump(isset($x));  // 결과: true

 $x = "0";
 var_dump(isset($x));  // 결과: true

 $x = "-1";
 var_dump(isset($x));  // 결과: true

 $x = "true";
 var_dump(isset($x));  // 결과: true

 $x = "false";
 var_dump(isset($x));  // 결과: true
 ?>

위 예제에서 확인할 수 있듯 빈 문자열이나 빈 배열 값을 제외하려면, 다음 예와 같이 처리해줄 수 있습니다.

<?php 
 function issset($var){
      $var = trim($var);
      if(($var === "") || ($var === array()) || ($var === false)){
           $var = null;
      }
      if(isset($var)){
           return true;
      }
      return false;
 }
 $x = ""; 
 var_dump(issset($x)); // 결과: false
 ?>

다음은 객체 비교 예제입니다.

<?php
 class T { 
      function __isset($att){ 
           $props = get_object_vars($this); 
           return array_key_exists($att, $props); 
      } 
 } 

 $x = new T(); 
 $x->foo_exists = 4; 

 var_dump(isset($x->foo_exists)); // 결과: true
 var_dump(isset($x->bar_exists)); // 결과: true
 ?>

0 댓글