gettype()
A função gettype() do PHP retorna o tipo de dado de uma variável como string, útil para depuração e tratamento de entradas mistas.
Introdução
PHP é uma linguagem de tipagem dinâmica: o tipo de uma variável é decidido em tempo de execução, não declarado previamente. A função nativa gettype() permite inspecionar esse tipo em tempo de execução, retornando uma string legível por humanos como "integer" ou "string". É útil ao depurar valores inesperados, ramificar com base no tipo de uma entrada mista ou escrever mensagens de log que descrevam o que foi recebido.
Esta página cobre a sintaxe da função, as strings exatas que ela pode retornar, as peculiaridades dos nomes de tipo legados que confundem as pessoas, e quando usar gettype() versus as funções dedicadas is_*.
Sintaxe
gettype(mixed $value): stringgettype() recebe um único argumento, $value — a variável cujo tipo você quer conhecer — e retorna uma string com o nome desse tipo. Nunca lança exceções e nunca modifica seu argumento.
Valores retornados
gettype() retorna uma das seguintes strings fixas:
| String retornada | Tipo PHP |
|---|---|
"boolean" | bool (true / false) |
"integer" | int |
"double" | float (sim, double, não "float" — veja o aviso abaixo) |
"string" | string |
"array" | array |
"object" | qualquer instância de objeto |
"resource" | um recurso aberto (ex.: um identificador de arquivo) |
"resource (closed)" | um recurso fechado (PHP 7.2+) |
"NULL" | o valor null |
"unknown type" | um tipo que o PHP não consegue nomear de outra forma |
Exemplo básico
Exemplo de gettype() em PHP
Aqui definimos quatro variáveis de tipos diferentes e pedimos ao gettype() para nomear cada uma. A saída é string, integer, boolean e array — um nome de tipo por linha.
A armadilha do "double" e "integer"
As strings que gettype() retorna não correspondem às palavras-chave usadas nas declarações de tipo. Um float é reportado como "double", e um int é reportado como "integer":
<?php
echo gettype(3.14), "\n"; // double (NOT "float")
echo gettype(7), "\n"; // integer (NOT "int")
echo gettype(null), "\n"; // NULL (uppercase)
?>Por causa disso, comparar a saída de gettype() com "float" ou "int" falha silenciosamente. Se você precisar apenas de uma resposta sim/não sobre um único tipo, prefira as funções dedicadas — is_int(), is_float(), is_string(), is_array() e similares — que são mais rápidas e livres da surpresa de nomenclatura:
<?php
$value = 7;
// Brittle: depends on the legacy name
if (gettype($value) === "integer") { /* ... */ }
// Clearer and faster:
if (is_int($value)) { /* ... */ }
?>No PHP 8.0 e versões posteriores, get_debug_type() é a alternativa moderna: retorna os nomes canônicos (int, float, bool) e, para objetos, o nome real da classe em vez de apenas "object".
Quando usar gettype()
- Depuração e registro — imprimir o tipo de um valor junto ao seu conteúdo enquanto se rastreia um bug.
- Tratamento genérico de entrada mista — ramificar em um
switchquando uma função aceita legitimamente vários tipos. - Inspeção rápida — uma verificação pontual no console sem se preocupar com a nomenclatura moderna.
Para exibições estruturadas completas de um valor (seu tipo e seu conteúdo, de forma recursiva), use var_dump() ou print_r(). Para alterar o tipo de uma variável em vez de lê-lo, veja settype(). Para uma visão geral do sistema de tipos do PHP, leia Tipos de Dados PHP.
Conclusão
gettype() fornece uma resposta rápida em string para "qual é o tipo deste valor?" — útil para depuração, registro e tratamento de entradas mistas. Lembre-se apenas dos nomes legados ("double" para floats, "integer" para ints) e prefira as funções is_* ou get_debug_type() quando precisar de uma verificação precisa e à prova de futuro.