정의 및 사용 방법
- PHP 버전
- 4+
gettype() 함수는
인수로 전달된 값의 데이터 타입을 문자열로 반환합니다.
이 함수를 사용하면 변수의 데이터 타입을 확인하는데 매우 유용합니다.
기본 예제
var_dump(gettype(10)); // string(7) "integer"
var_dump(gettype('Hello, world!')); // string(6) "string"
var_dump(gettype([1, 2, 3])); // string(5) "array"
var_dump(gettype(new stdClass())); // string(6) "object"
settype() 함수는 인수로 전달된 변수를 지정된 데이터 타입으로 설정합니다.
구문
gettype(mixed $value): string
매개변수
$value |
데이터 타입을 확인할 변수나 값 |
|---|
반환 값
변수의 데이터 타입을 문자열로 반환합니다. 반환될 수 있는 데이터 형식의 목록은 다음과 같습니다.
위에 나열되어 있는 것들은 gettype() 함수가 반환할 수 있는 가능한 문자열 값들의 목록입니다. 이 목록을 토대로 변수의 데이터 타입을 확인할 수 있습니다.
'boolean'
'boolean' 문자열은 true(참) 또는 false(거짓) 중 하나의 값만 가질 수 있는 데이터 타입이 부울(boolean)임을 나타냅니다. 이 타입은 주로 조건문과 논리 연산에서 흐름을 제어하는 데 사용됩니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
var_dump(gettype(true)); // string(7) "boolean"
var_dump(gettype(false)); // string(7) "boolean"
데이터 타입이 부울(boolean)인지 체크할 때는 is_bool() 함수를 사용하는 것이 좋습니다.
is_bool() 함수는 부울(boolean) 타입에만 적용되므로, gettype() 함수보다 부울(boolean) 타입을 체크하는 하는데 있어서 더 명시적이고 권장됩니다.
부연설명
is_bool() 함수는 주어진 값이 부울(boolean) 타입인지 확인합니다.
매개변수로 전달된 값이 부울 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var_dump(is_bool(true)); // bool(true)
var_dump(is_bool(false)); // bool(true)
'integer'
'integer' 문자열은 소수점이 없는 수치인 데이터 타입이 정수(integer)임을 나타냅니다. 이것은 양의 정수, 음의 정수, 또는 0을 포함하는 모든 정수 값을 나타냅니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
var_dump(gettype(10)); // string(7) "integer"
var_dump(gettype(-10)); // string(7) "integer"
var_dump(gettype(0)); // string(7) "integer"
데이터 타입이 정수(integer)인지 체크할 때는 is_int() 함수를 사용하는 것이 좋습니다. is_int() 함수는 정수(integer) 타입에만 적용되므로, gettype() 함수보다 정수(integer) 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_int() 함수는 주어진 값이 정수(integer) 타입인지 확인합니다.
매개변수로 전달된 값이 정수 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var_dump(is_int(10)); // bool(true)
var_dump(is_int(-10)); // bool(true)
var_dump(is_int(0)); // bool(true)
'double'
'double' 소수점을 포함하는 수치인 데이터 타입이 부동 소수점(float, 또는 double) 숫자임을 나타냅니다. 부동 소수점 숫자는 정수와 달리 소수 부분이 포함된 숫자를 표현할 때 사용됩니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
var_dump(gettype(10.5)); // string(6) "double"
var_dump(gettype(-10.5)); // string(6) "double"
var_dump(gettype(0.0)); // string(6) "double"
데이터 타입이 부동 소수점(float, 또는 double)인지 체크할 때는 is_float() 함수를 사용하는 것이 좋습니다. is_float() 함수는 부동 소수점 타입에만 적용되므로, gettype() 함수보다 부동 소수점 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_float() 함수는 주어진 값이 부동소수점 숫자(float) 타입인지 확인합니다.
매개변수로 전달된 값이 부동소수점 숫자 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var_dump(is_float(10.5)); // bool(true)
var_dump(is_float(-10.5)); // bool(true)
var_dump(is_float(0.0)); // bool(true)
'string'
'string' 문자열은 일련의 문자 집합인 데이터 타입이 문자열(string)임을 나타냅니다. 문자열은 반드시 작은따옴표('')나 큰따옴표("")로 감싸서 표현해야 합니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
var_dump(gettype('Hello, world!')); // string(6) "string"
var_dump(gettype('환영합니다.')); // string(6) "string"
var_dump(gettype('')); // string(6) "string"
데이터 타입이 문자열(string)인지 체크할 때는 is_string() 함수를 사용하는 것이 좋습니다. is_string() 함수는 문자열 타입에만 적용되므로, gettype() 함수보다 문자열 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_string() 함수는 주어진 값이 문자열(string) 타입인지 확인합니다.
매개변수로 전달된 값이 문자열 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var_dump(is_string('Hello, world!')); // bool(true)
var_dump(is_string('환영합니다.')); // bool(true)
var_dump(is_string('')); // bool(true)
'array'
'array' 문자열은 여러 값을 하나의 변수에 담을 수 있는 데이터 타입이 배열(array)임을 나타냅니다. PHP의 배열은 숫자를 키로 사용하는 인덱스 배열(indexed array)과 문자열을 키로 사용하는 연관 배열(associative array)을 모두 포함합니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
var_dump(gettype(array())); // string(5) "array"
var_dump(gettype([])); // string(5) "array"
var_dump(gettype([1, 2, 3])); // string(5) "array"
var_dump(gettype(['Hello', 'world'])); // string(5) "array"
var_dump(gettype(['name' => 'John Doe', 'age' => 30])); // string(5) "array"
데이터 타입이 배열(array)인지 체크할 때는 is_array() 함수를 사용하는 것이 좋습니다. is_array() 함수는 배열 타입에만 적용되므로, gettype() 함수보다 배열 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_array() 함수는 주어진 값이 배열(array) 타입인지 확인합니다.
매개변수로 전달된 값이 배열 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
var_dump(is_array(array())); // bool(true)
var_dump(is_array([])); // bool(true)
var_dump(is_array([1, 2, 3])); // bool(true)
var_dump(is_array(['Hello', 'world'])); // bool(true)
var_dump(is_array(['name' => 'John Doe', 'age' => 30])); // bool(true)
'object'
'object' 문자열은 데이터 타입이 객체(object)임을 나타냅니다. PHP에서 객체는 클래스(class)로부터 생성된 인스턴스(instance)로서, 클래스에 정의된 속성(데이터)과 메서드(동작)를 하나의 단위로 캡슐화하여 포함하고 있습니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
class MyClass {
public $name = 'John Doe';
public $age = 30;
}
$obj1 = new MyClass();
$obj2 = clone $obj1;
var_dump(gettype($obj1)); // string(6) "object"
var_dump(gettype($obj2)); // string(6) "object"
데이터 타입이 객체(object)인지 체크할 때는 is_object() 함수를 사용하는 것이 좋습니다. is_object() 함수는 객체 타입에만 적용되므로, gettype() 함수보다 객체 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_object() 함수는 주어진 값이 객체(object) 타입인지 확인합니다.
매개변수로 전달된 값이 객체 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
class MyClass {
public $name = 'John Doe';
public $age = 30;
}
$obj1 = new MyClass();
$obj2 = clone $obj1;
var_dump(is_object($obj1)); // bool(true)
var_dump(is_object($obj2)); // bool(true)
'resource'
'resource' 문자열은 데이터 타입이 리소스(resource)임을 나타냅니다. 리소스는 파일 핸들, 데이터베이스 연결, 또는 네트워크 스트림과 같이 PHP 외부의 자원과 상호작용할 때 사용되는 특수한 데이터 타입입니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
// 파일을 엽니다.
$fp = fopen('test.txt', 'w');
var_dump(gettype($fp)); // string(8) "resource"
데이터 타입이 리소스(resource)인지 체크할 때는 is_resource() 함수를 사용하는 것이 좋습니다. is_resource() 함수는 리소스 타입에만 적용되므로, gettype() 함수보다 리소스 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_resource() 함수는 주어진 값이 리소스(resource) 타입인지 확인합니다.
매개변수로 전달된 값이 리소스 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
// 파일을 엽니다.
$fp = fopen('test.txt', 'w');
var_dump(is_resource($fp)); // bool(true)
'resource (closed)'
'resource (closed)' 데이터 타입은
외부 리소스와 상호작용하는 동안 사용되었던 리소스가 이제 닫혔음을 나타내는 데이터 타입입니다. 이 데이터 타입은 리소스가 더 이상 활성화되지 않고 사용할 수 없다는 것을 나타냅니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
// 파일을 엽니다.
$fp = fopen('test.txt', 'w');
// 파일 핸들을 닫습니다.
fclose($fp);
echo gettype($fp); // 'resource (closed)'
주의하세요!
'resource (closed)' 데이터 타입을 확인할 때 is_resource() 함수를 사용하지 마세요!
is_resource() 함수는 'resource' 타입의 변수인지를 확인하는 함수이기 때문에, 'resource (closed)' 데이터 타입은 is_resource() 함수로 체크되지 않습니다. false입니다.
// 파일을 엽니다.
$fp = fopen('test.txt', 'w');
// 파일 핸들을 닫습니다.
fclose($fp);
if (gettype($fp) == 'resource (closed)') {
echo "파일 포인터가 닫혔습니다."; // 출력
} else {
echo '파일 포인터가 열려 있습니다.';
}
'resource (closed)' 데이터 타입을 확인하려면 gettype() 함수를 사용하여 변수의 데이터 타입을 확인하는 것이 명확하다고 할 수 있습니다.
'NULL'
'NULL' 문자열은 데이터 타입이 NULL임을 나타냅니다. 이는 변수에 값이 할당되지 않았거나, 명시적으로 null 값을 할당하여 변수에 값이 없음을 나타낼 때 사용되는 특수한 데이터 타입입니다.
다음과 같은 예제를 통해 이해할 수 있습니다.
$a = null;
$b;
var_dump(gettype($a)); // string(4) "NULL"
var_dump(gettype($b)); // string(4) "NULL"
데이터 타입이 NULL인지 체크할 때는 is_null() 함수를 사용하는 것이 좋습니다. is_null() 함수는 NULL 타입에만 적용되므로, gettype() 함수보다 NULL 타입을 체크하는 데 있어서 더 명시적이고 권장됩니다.
부연설명
is_null() 함수는 주어진 값이 NULL 타입인지 확인합니다.
매개변수로 전달된 값이 NULL 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
$a = null;
$b;
var_dump(is_null($a)); // bool(true)
var_dump(is_null($b)); // bool(true)
'unknown type'
알아두세요!
PHP 7.2.0 전 버전에서는 gettype() 함수가 닫힌 리소스를 확인할 때 'unknown type'이라는 값을 반환했습니다. 이것은 닫힌 리소스에 대한 정보를 불분명하게 표시하는 문제가 있었습니다. PHP 7.2.0부터는 이러한 문제를 개선하기 위해 gettype() 함수가 닫힌 리소스를 확인할 때 'resource (closed)'라는 값을 반환하도록 변경되었습니다. 이를 통해 개발자들은 리소스 변수가 닫힌 상태임을 더 명확하게 알 수 있게 되었습니다.
PHP 7.2.0 버전부터는 PHP에서 'unknown type' 값이 더 이상 존재하지 않습니다.