Tipos
PHP Manual

Enteros (Integers)

Un entero integer es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.

Ver también:

Sintaxis

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.

Advertencia

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
?>

Desbordamiento de enteros

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) 
?>

Conversión a 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 en tiempo de 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 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.

Advertencia

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

Desde string

Consulte Conversión de string a números

Desde otros tipos

Precaución

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.


Tipos
PHP Manual