is_long()
A função is_long() no PHP verifica se uma variável é do tipo inteiro. Retorna true se for inteiro e false caso contrário.
Introdução
is_long() é uma função PHP integrada que verifica se uma variável contém um valor do tipo inteiro. Ela retorna true se a variável for um inteiro e false caso contrário.
O ponto principal a entender é que is_long() é um alias exato de is_int(): ambos os nomes chamam a mesma função subjacente e se comportam de forma idêntica. Esta página explica de onde vem o nome is_long(), como ele se comporta e por que você geralmente deve preferir is_int() em novos códigos.
Por que o nome "is_long"?
No código-fonte C do PHP, o tipo inteiro é representado internamente por um long do C. Por causa dessa história, o PHP expõe três nomes intercambiáveis para a mesma verificação de inteiro:
is_int()— o nome canônico e recomendado.is_integer()— um alias mantido por legibilidade.is_long()— um alias que espelha o nome do tipo C interno.
Todos os três ainda estão disponíveis no PHP atual (incluindo PHP 8.x), e todos os três retornam o mesmo resultado para a mesma entrada. O manual do PHP lista is_long() e is_integer() como aliases de is_int() e recomenda is_int() por clareza.
Sintaxe Básica
is_long($variable); // identical to is_int($variable)O parâmetro $variable é o valor a ser testado. A função retorna true apenas para um valor inteiro real, sem coerção de tipo — strings numéricas e floats retornam false.
Exemplo de Uso
Aqui is_long() é usada para testar três variáveis diferentes:
bool(true)
bool(false)
bool(false)Apenas $var1 é um inteiro verdadeiro. A string numérica "10" e o float 3.14 retornam false, porque is_long() verifica o tipo real e nunca converte o valor antes. Trocar is_long() por is_int() aqui produziria exatamente a mesma saída — é isso que "alias" significa.
Filtrando valores por tipo
Por retornar um boolean, is_long() funciona diretamente como callback para funções como array_filter(). Isso é útil para manter apenas os inteiros genuínos de um array misto:
Array
(
[0] => 10
[3] => 40
)array_filter() mantém apenas os inteiros reais, descartando a string numérica "20" e o float 30.5. Note que as chaves originais do array (0 e 3) são preservadas, sem renumeração.
Notas Importantes
- Alias de
is_int():is_long()não tem comportamento próprio. Não existe um tipo "long" separado no PHP distinto deint; o nome simplesmente reflete a representação interna em C. - Ainda disponível, mas não preferido:
is_long()funciona no PHP atual, mas o manual recomendais_int()por legibilidade. Muitos guias de estilo e ferramentas de análise estática sinalizam o alias. - Sem coerção de tipo: assim como
is_int(), retornafalsepara strings numéricas ("123") e floats com valores inteiros (5.0). Para aceitar esses casos, useis_numeric()oufilter_var($var, FILTER_VALIDATE_INT).
Boas Práticas
Prefira is_int() em novos códigos
is_int(), is_integer() e is_long() são intercambiáveis, então escolha um e seja consistente. A convenção da comunidade é is_int() — é o mais curto, o mais claro e o nome que a documentação utiliza.
Evite comparações redundantes
Como a função já retorna um boolean, envolver seu resultado em uma comparação estrita (=== true) é desnecessário. Escreva simplesmente if (is_int($var)).
Funções Relacionadas de Verificação de Tipo
is_int()— a verificação de inteiro canônica e recomendada.is_integer()— outro alias legível deis_int().is_numeric()—truepara inteiros, floats e strings numéricas.is_float()— verifica valores de ponto flutuante.is_string()— verifica valores do tipo string.
Conclusão
is_long() é simplesmente um nome alternativo para is_int(). Ela realiza uma verificação de inteiro estrita e sem coerção e se comporta de forma idêntica ao seu equivalente mais conhecido. Como o alias não adiciona funcionalidade e pode confundir leitores, use is_int() em novos códigos e reserve is_long() para entender bases de código mais antigas que ainda dependem desse nome.