Inteiros
Um int é um número do conjunto
ℤ = {..., -2, -1, 0, 1, 2, ...}.
&reftitle.seealso;
Números de ponto flutuantePrecisão arbitrária / BCMathNúmero inteiro de comprimento arbitrário / GMPSintaxeInt pode ser especificado em notação decimal (base 10), hexadecimal
(base 16), octal (base 8) ou binária (base 2).
O sinal de menos
pode ser usado para indicar um int negativo.
Para usar a notação octal, preceda o número com um 0 (zero).
A partir do PHP 8.1.0, a notação octal também pode ser precedida por 0o ou 0O.
Para utilizar a notação hexadecimal, preceda o número com 0x.
Para utilizar a notação binária, preceda o número com 0b.
A partir do PHP 7.4.0, inteiros literais podem conter sublinhados (_) entre os dígitos,
para melhorar a sua leitura. Estes sublinhados serão removidos pelo analisador do PHP.
Inteiros literais
]]>
Formalmente, a estrutura para int literais é esta a partir do PHP 8.1.0
(anteriormente, os prefixos octal 0o ou 0O
não eram permitidos, e antes do PHP 7.4.0 os sublinhados
não eram permitidos):
O tamanho de um int depende da plataforma, embora um valor máximo
de cerca de dois bilhões seja o valor usual (são 32 bits com sinal).
As plataformas de 64 bits geralmente têm um valor máximo de cerca de 9E18.
O PHP não suporta int sem sinal.
O tamanho int pode ser determinado
usando a constante PHP_INT_SIZE, o valor máximo
usando a constante PHP_INT_MAX e
o valor mínimo usando a constante PHP_INT_MIN.
Overflow de inteiros
Se o PHP encontrar um número além dos limites do tipo int,
ele será interpretado como um float. Assim, uma
operação que resulte em um número além dos limites do tipo
int, retornará um float.
Estouro de inteiros
]]>
Divisão de inteiros
Não existe operador de divisão int no PHP, para isso
deve ser usada a função intdiv.
1/2 produz o float0.5.
O valor pode ser convertido em um int para arredondar para zero ou
pode ser usada a função round para um controle mais preciso sobre o arredondamento.
Divisões
]]>
Convertendo para inteiro
Para converter explicitamente um valor para int, use a conversão (int).
Entretanto, na maioria dos casos, o modificador não é necessário, já que o valor
será automaticamente convertido se um operador, função ou estrutura de controle
requerer um int como argumento. Um valor também pode ser convertido para
int utilizando a função intval.
Se um resource for convertido para um int,
resultará no número único do recurso, atribuído ao
resource pelo PHP em tempo de execução.
Veja também Manipulação de Tipos.
Convertendo a partir de booleanos
&false; será retornado como 0 (zero), e &true; retornará
1 (um).
Convertendo a partir de números de ponto flutuante
Ao converter de float para int, o número
será arredondado em direção ao zero.
A partir do PHP 8.1.0, um aviso de descontinuação é emitido quando ocorre a conversão implícita de um &float; não integral para &integer; que perca precisão.
Convertendo a partir de float
]]>
Se o float estiver além dos limites de int (geralmente
+/- 2.15e+9 = 2^31 em plataformas de 32 bits e
+/- 9.22e+18 = 2^63 em plataformas de 64 bits),
o resultado é indefinido, já que o float não tem
precisão suficiente para fornecer um resultado int exato.
Nenhum alerta, nem mesmo uma nota, será emitido quando isso acontecer!
NaN, Inf e -Inf sempre serão zero quando convertidos para int.
Nunca converta uma fração desconhecida para int porque isto pode,
algumas vezes, levar a resultados inesperados.
]]>
Veja também o alerta sobre a precisão de número
flutuante.
Convertendo a partir de strings
Se a string for
numérica
ou inicialmente numérica, ela será convertida para o valor
inteiro correspondente, caso contrário, será convertida para zero
(0).
Convertendo a partir de NULL
&null; é sempre convertido para zero (0).
Convertendo a partir de outros tipos
O comportamento da conversão de um int é desconhecido para outros
tipos. Não se deve depender de nenhum comportamento observado, pois ele pode
ser alterado sem aviso.