is_integer()
A função is_integer() é um alias de is_int() em PHP. Verifica se uma variável é um inteiro e retorna um booleano.
Introdução
is_integer() é um alias de is_int() em PHP. Testa se o tipo de uma variável é inteiro e retorna um boolean. Um inteiro em PHP é um número inteiro sem parte fracionária, como -5, 0 ou 42.
Esta página aborda o que is_integer() verifica (e o que deliberadamente não verifica), as armadilhas com strings numéricas e qual nome você deve usar em código novo.
Use
is_int()em vez disso.is_integer()eis_int()são a mesma função, portanto nenhuma delas foi removida ou descontinuada. No entanto,is_int()é o nome canônico usado em todo o manual PHP e nas bases de código modernas. Prefira-o para manter a consistência.
Sintaxe
is_integer(mixed $value): boolAceita um argumento, $value, a variável a ser inspecionada, e retorna true somente quando $value é do tipo int, e false para qualquer outro tipo.
Exemplo de uso
$var1 armazena o inteiro 42, então a chamada retorna true, que o echo imprime como 1. $var2 é uma string, então a chamada retorna false, que o echo não imprime (string vazia). Para ver os valores booleanos com clareza, use var_dump() em vez de echo.
Verifica o tipo, não o valor
Esta é a fonte de confusão mais comum: is_integer() analisa o tipo da variável, portanto uma string como "42" ou um float como 42.0 não é um inteiro, mesmo que "pareça" um.
<?php
var_dump(is_integer(42)); // bool(true)
var_dump(is_integer("42")); // bool(false) — numeric string, not int
var_dump(is_integer(42.0)); // bool(false) — float, not int
var_dump(is_integer(true)); // bool(false) — bool, not int
var_dump(is_integer(null)); // bool(false)
var_dump(is_integer(PHP_INT_MAX)); // bool(true)
?>Se você precisar aceitar strings numéricas (por exemplo, valores vindos de $_GET, $_POST ou de um arquivo CSV), use is_numeric() ou converta/valide com intval().
Quando usar?
- Proteger o argumento de uma função antes de realizar operações matemáticas exclusivas de inteiros, como usar um valor como índice de array ou limite de loop.
- Diferenciar tipos após uma função que pode retornar tipos mistos (padrão comum com
strpos(), que retorna um deslocamentointoufalse):
<?php
$pos = strpos("hello world", "world");
if (is_integer($pos)) {
echo "Found at index $pos\n"; // Found at index 6
} else {
echo "Not found\n";
}
?>Funções relacionadas de verificação de tipo
| Função | Retorna true para |
|---|---|
is_int() | Um int (nome canônico; idêntico a is_integer()) |
is_float() | Um float (ex.: 3.14, 42.0) |
is_string() | Uma string, incluindo "42" |
is_numeric() | Um int, float ou string numérica |
gettype() | (retorna o nome do tipo, não um bool) |
Consulte o capítulo tipos de dados PHP para ter uma visão completa de como o PHP categoriza os valores.
Conclusão
is_integer() é um alias de is_int() que retorna true somente quando uma variável é do tipo int. Lembre-se de que verifica o tipo, não o valor, portanto strings numéricas e floats retornam false. Para código novo, prefira o canônico is_int(); recorra a is_numeric() quando strings numéricas também devem ser consideradas.