Números enteros (Integers)
Un número entero (o integer) es un número del conjunto
ℤ = {..., -2, -1, 0, 1, 2, ...}.
Véase también:
Enteros de longitud arbitraria / GMP
Números de punto flotante
Precisión arbitraria / BCMath
Sintaxis
Los integer pueden especificarse mediante notación decimal
(base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente
precedidos por un signo (- o +).
Los literales de tipo integer binarios están disponibles desde PHP 5.4.0.
Para utilizar la notación octal, se antepone al número un 0 (cero).
Para utilizar la notación hexadecimal, se antepone al número 0x.
Para utilizar la notación binaria, se antepone al número 0b.
Literales de números enteros
]]>
Formalmente, la estructura de los literales de tipo integer es:
El tamaño de un integer depende de la plataforma, aunque el valor usual
es un valor máximo de aproximadamente dos mil millones (esto es, 32 bits con signo).
Las plataformas de 64 bits normalmente tienen un valor máximo de aproximadamente 9E18, excepto en
Windows antes de PHP 7, que siempre es de 32 bits. PHP no tiene soporte para el tipo
integer sin signo. El tamaño de un integer se puede determinar
mediante la constante PHP_INT_SIZE, y el valor máximo mediante la
constante PHP_INT_MAX desde PHP 4.4.0 y PHP 5.0.5,
y el valor mínimo mediante la constante PHP_INT_MIN desde
PHP 7.0.0.
Antes de PHP 7, si a un integer octal se le proporcionaba un dígito no válido
(esto es, 8 o 9), se ignoraba el resto del número. Desde PHP 7, se emite un error
de análisis.
Desbordamiento de enteros
Si PHP encuentra un número fuera de los límites de un integer,
se interpretará en su lugar como un valor de tipo float. También, una
operación cuyo resultado sea un número fuera de los límites de un
integer devolverá en su lugar un valor de tipo float.
Desbordamiento de enteros en sistemas de 32 bit
]]>
Desbordamiento de enteros en sistemas de 64 bit
]]>
No existe el operador de división de integer en PHP.
1/2 produce el float0.5.
El valor puede ser convertido a un integer redondeándolo a cero, o
mediante la función round que permite un mayor control sobre el redondeo.
]]>
Conversión a números enteros
Para convertir explícitamente un valor al tipo integer se puede emplear
tanto (int) como (integer). Sin embargo,
la mayoría de las veces la conversión no es necesaria, ya que un valor es convertido
de forma automática cuando un operador, función o estructura de control requiera un
argumento de tipo integer. Un valor también puede ser convertido al
tipo integer mediante la función intval.
Si un resource es convertido a un integer,
el resultado será el número de recurso único asignado al
resource por PHP durante la ejecución.
Consulte también la Manipulación de tipos.
Desde booleanos
&false; producirá 0 (cero), y &true; producirá
1 (uno).
Desde números de punto flotante
Cuando se convierte un float a un integer, el número
será redondeado hacia cero.
Si el valor de tipo float esta por debajo de los límites de un integer (normalmente
+/- 2.15e+9 = 2^31 en plataformas de 32 bits y
+/- 9.22e+18 = 2^63 en plataformas de 64 bits distintas de
Windows), el resultado es indefinido, debido a que float no tiene
la precisión suficiente para ofrecer el resultado como un integer exacto.
No se mostrará ninguna advertencia, ni siquiera un aviso, cuando esto ocurra.
Nunca se debe convertir una fracción desconocida a un integer, ya que
a veces puede conducir a resultados inesperados.
]]>
Consulte también la advertencia sobre la precisión de
float
Desde cadenas de caracteres
Consulte Conversión de string a
números
Desde otros tipos
El comportamiento de la conversión de integer a otros tipos es indefinido.
No confíe en ningún comportamiento observado, ya que puede
cambiar sin previo aviso.