Un número entero (o integer) es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.
Véase también:
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.
Ejemplo #1 Literales de números enteros
<?php
$a = 1234; // número decimal
$a = -123; // un número negativo
$a = 0123; // número octal (equivale a 83 decimal)
$a = 0x1A; // número hexadecimal (equivale a 26 decimal)
$a = 0b11111111; // número binario (equivale al 255 decimal)
?>
Formalmente, la estructura de los literales de tipo integer es:
decimal : [1-9][0-9]* | 0 hexadecimal : 0[xX][0-9a-fA-F]+ octal : 0[0-7]+ binario : 0b[01]+ entero : [+-]?decimal | [+-]?hexadecimal | [+-]?octal | [+-]?binario
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.
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.
Ejemplo #2 Desbordamiento de enteros en sistemas de 32 bit
<?php
$número_grande = 2147483647;
var_dump($número_grande); // int(2147483647)
$número_grande = 2147483648;
var_dump($número_grande); // float(2147483648)
$millón = 1000000;
$número_grande = 50000 * $millón;
var_dump($número_grande); // float(50000000000)
?>
Ejemplo #3 Desbordamiento de enteros en sistemas de 64 bit
<?php
$número_grande = 9223372036854775807;
var_dump($número_grande); // int(9223372036854775807)
$número_grande = 9223372036854775808;
var_dump($número_grande); // float(9.2233720368548E+18)
$millón = 1000000;
$número_grande = 50000000000000 * $millón;
var_dump($número_grande); // float(5.0E+19)
?>
No existe el operador de división de integer en PHP. 1/2 produce el float 0.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.
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
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.
FALSE
producirá 0 (cero), y TRUE
producirá
1 (uno).
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.
Nota:
A partir de PHP 7.0.0,0, en lugar de ser indefinidos y dependientes de la plataforma, NaN e Infinity siempre serán cero al amoldarlos a integer.
Nunca se debe convertir una fracción desconocida a un integer, ya que a veces puede conducir a resultados inesperados.
<?php
echo (int) ( (0.1+0.7) * 10 ); // ¡muestra 7!
?>
Consulte también la advertencia sobre la precisión de float
Consulte Conversión de string a números
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.