lang/php

php type check

C/H 2010. 8. 27. 08:30
PHP 변수타입을 확인하는 명령어로 gettype 이 있습니다.

저도 javascript에서 typeof를 많이 쓰긴하지만 PHP에서 gettype은 좀처럼 쓰지 않다가(아예 쓰지 않았었죠) 최근에 typeof로 검색을 하니 PHP에도 gettype이라는 변수 type을 확인하는 명령어가 있더군요.

하지만 gettype은 자료형을 스트링으로 검사하기 때문에 속도가 느리다고 합니다.

gettype()을 어떤 자료형인지 시험하기 위해 사용하지 마십시오. 반환 문자열은 앞으로 나올 버전에서 바뀔 수 있습니다. 또한, 문자열 비교를 수행하기 때문에 느립니다.

대신, is_* 함수를 사용하십시오.

php.net : gettype
 
/* 
gettype이 반환하는 문자열 
"boolean"
"integer"
"double" (역사적인 이유로 float의 경우에도 단순히 "float"가 아닌 "double"을 반환합니다)
"string"
"array"
"object"
"resource"
"NULL"
"unknown type"
*/
$val = "";
$type = gettype($val);
php.net 에서 제안하는 is_* 함수를 사용하는 방법
/*
settype() - 변수의 자료형을 설정
is_array() - 변수가 배열인지 확인
is_bool() - 변수가 논리형인지 확인
is_float() - 변수의 자료형이 소수인지 확인합니다
is_int() - 변수의 자료형이 정수인지 확인합니다
is_null() - 변수가 NULL인지 확인합니다
is_numeric() - 변수가 수나 수 문자열인지 확인합니다
is_object() - 변수가 객체인지 확인합니다
is_resource() - 변수가 자원인지 확인
is_scalar() - 변수가 스칼라인지 확인
is_string() - 변수의 자료형이 문자열인지 확인합니다
function_exists() - Return TRUE if the given function has been defined
method_exists() - 클래스 메쏘드가 존재하는지 확인
*/

/**
* 변수 타입을 반환한다.
* 
* @param	unknown_type $var
* @return	str variable type
*/
function typeof($var){
	switch(TRUE){
		case(is_bool($var)):	return 'boolean';break;
		case(is_int($var)):	return 'integer'; break;
		case(is_numeric($var)): return 'number'; break;
		case(is_float($var)):	return 'float'; break;
		case(is_string($var)):	return 'string'; break;
		case(is_array($var)):	return 'array'; break;
		case(is_scalar($var)):	return 'scalar'; break;
		case(is_object($var)):	return 'object'; break;
		case(is_resource($var)):return 'resource'; break;
		case(is_null($var)):	return 'NULL'; break;
		default:		return 'unknown type'; break;
	}
}


PHP Variable handling 함수 목록


반응형

'lang > php' 카테고리의 다른 글

가상호스트 mod_rewrite 및 gzip 설정  (0) 2010.09.14
p3p  (0) 2010.09.13
facebook API & Session 죽이기  (0) 2010.08.26
PHP Fatal error: Allowed memory size of 8388608 bytes exhausted  (0) 2010.08.06
LAMPP & 버추얼호스트 & XDebug  (0) 2010.07.20