Un entero integer es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.
Ver también:
Los integer pueden ser especificados mediante notación decimal (base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente precedidos por un signo (- o +).
Los literales 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 Enteros literales
<?php
$a = 1234; // número decimal
$a = -123; // un número negativo
$a = 0123; // número octal (equivalente a 83 decimal)
$a = 0x1A; // número hexadecimal (equivalente a 26 decimal)
$a = 0b11111111; // número binario (equivalente al 255 decimal)
?>
Formalmente, la estructura de los integer literales 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 | [+-]?binary
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 bit normalmente tienen un valor máximo de aproximadamente 9E18,
excepto para Windows, que siempre es de 32 bit. PHP no tiene soporte para 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.
Si a un integer octal se le proporciona un dígito incorrecto (p.ej., 8 o 9), el resto del número se ignora.
Ejemplo #2 Rareza de los octales
<?php
var_dump(01090); // 010 octal = 8 decimal
?>
Si PHP encuentra un número fuera de los límites de un integer, se interpretará en su lugar como un 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 float.
Ejemplo #3 Desbordamiento de enteros en sistemas 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 #4 Desbordamiento de enteros en sistemas 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 hacia abajo, 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 en tiempo de 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 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.
<?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.