Los enteros pueden ser especificados en notación decimal
(base-10), hexadecimal (base-16) u octal (base-8), opcionalmente
precedidos por un signo (- o +).
Si usa la notación octal, debe preceder el número
con un 0 (cero), para usar la notación
hexadecimal, preceda el número con 0x.
Ejemplo 6-1. Literales tipo entero
<?php $a = 1234; // numero decimal $a = -123; // un numero negativo $a = 0123; // numero octal (equivalente al 83 decimal) $a = 0x1A; // numero hexadecimal (equivalente al 26 decimal) ?>
Formalmente, la posible estructura para literales enteros es:
El tamaño de un entero es dependiente de la plataforma,
aunque un valor máximo de aproximadamente dos billones es
el valor usual (lo que es un valor de 32 bits con signo). PHP no
soporta enteros sin signo.
Si especifica un número más allá de los
límites del tipo integer, será
interpretado en su lugar como un float. Asimismo, si
realiza una operación que resulta en un número
más allá de los límites del tipo
integer, un float es retornado en su
lugar.
Desafortunadamente, había un fallo en PHP que provocaba
que esto no siempre funcionara correctamente cuando se
presentaban números negativos. Por ejemplo: cuando hace
-50000 * $millon, el resultado será
-429496728. Sin embargo, cuando ambos
operandos son positivos no se presenta ningún problema.
Este problema fue resuelto en PHP 4.1.0.
No hay un operador de división de enteros en PHP.
1/2 produce el float0.5. Puede moldear el valor a un entero para
asegurarse de redondearlo hacia abajo, o puede usar la
función round().
Para convertir explícitamente un valor a
integer, use alguno de los moldeamientos
(int) o (integer). Sin
embargo, en la mayoría de casos no necesita usar el
moldeamiento, ya que un valor será convertido
automáticamente si un operador, función o
estructura de control requiere un argumento tipo
integer. También puede convertir un valor a
entero con la función intval().
Cuando se realizan conversiones desde un flotante a un entero,
el número será redondeado hacia
cero.
Si el flotante se encuentra más allá de los
límites del entero (usualmente +/- 2.15e+9 =
2^31), el resultado es indefinido, ya que el flotante
no tiene suficiente precisión para dar un resultado
entero exacto. No se producirá una advertencia, ¡ni
siquiera una noticia en este caso!
Aviso
Nunca moldee una fracción desconocida a
integer, ya que esto en ocasiones produce
resultados inesperados.
El comportamiento de convertir desde entero no es definido
para otros tipos. Actualmente, el comportamiento es el mismo
que si el valor fuera antes convertido a
booleano. Sin embargo, no
confíe en este comportamiente, ya que puede ser
modificado sin aviso.