Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BigJhow

[Resolvido] Como verificar se váriável é um integer?

Recommended Posts

Preciso checar se um valor passado via GET é um integer. O problema é que a função is_int NÃO funciona (retorna false). Como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma conversão automática com o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float. De outra forma, se os operadores forem interpretados como integers então o resultado será um integer.

 

<?php

$int = '3';

var_dump( $int ); // string '3' (length=1)

var_dump( is_int( $int ) ); // boolean false

var_dump( $int + 0 ); // int 3

var_dump( is_int( $int + 0 ) ); // boolean true


$float = '3.59';

var_dump( $float ); // string '3.59' (length=4)

var_dump( $float + 0 ); // float 3.59


var_dump( $int + $float ); // float 6.59

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que por default, oque vem da URL é string

 

você testa uma string com is_int(), retorna false; claro.

somando com zero, você não altera o valor, mas se aproveita do fraca tipagem do php, para que esse faça uma conversão automatica de tipo para você.

 

 

Por isso 'funciona'.

Não é uma forma 'elegante', já que se aproveita de uma particularidade da linguagem, porém é bem eficiente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque ele está vindo por $_GET como uma string.

Agora, se eu enviar um número ou uma palavra, ele retorna TRUE...

 

você faz uma varificação

<?php

$int = 'a';

if( is_numeric( $int ) )
{
   $int += 0;
}
var_dump( $int );

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq ai essa tua palavra somada com 0, vira o int correspondente (1), e por isso true.

 

eu faria uma verificação com expressão regular ou algo do tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.