Un entero o integer es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.
Consulte tambien:
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 usar la notación octal, se antepone al número un 0 (cero). Para usar la notación hexadecimal, se antepone al número un 0x. Para usar la notación binaria, se antepone al número un 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)
?>
Formalmente, la estructura de 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 un valor máximo
de aproximadamente dos billones es un valor usual (para 32 bits con signo).
Las plataformas de 64-bits normalmente tienen un valor máximo de aproximadamente 9E18. PHP
no admite integers sin signo. El tamaño de los integer
puede ser determinado 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 en un integer octal se da un dígito incorrecto (por ejemplo 8 o 9), el resto del número se ignora.
Ejemplo #2 Octal raros
<?php
var_dump(01090); // 010 octal = 8 decimal
?>
Si PHP encuentra un número fuera de los límites de un integer, se interpretará como un float en su lugar. Tambien, una operación cuyo resultado es 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-bits
<?php
$large_number = 2147483647;
var_dump($large_number); // int(2147483647)
$large_number = 2147483648;
var_dump($large_number); // float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number); // float(50000000000)
?>
Ejemplo #4 Desbordamiento de enteros en sistemas 64-bits
<?php
$large_number = 9223372036854775807;
var_dump($large_number); // int(9223372036854775807)
$large_number = 9223372036854775808;
var_dump($large_number); // float(9.2233720368548E+18)
$million = 1000000;
$large_number = 50000000000000 * $million;
var_dump($large_number); // float(5.0E+19)
?>
No existe operador de división de integer en PHP. 1/2produce el float 0.5. El valor puede ser forzado a ser un integer redondeando por defecto, 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 explicitamente un valor a 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 necesite un argumento del tipo integer. Un valor tambien puede ser convertido a integer mediante la función intval().
Consulte también: manipulación de tipos.
FALSE
produce 0 (cero), y TRUE
produce
1 (uno).
Cuando se convierte de 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), 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 ocurre!
Nunca se debe convertir una fracción desconocida a un integer, ya que a veces puede producir resultados inesperados.
<?php
echo (int) ( (0.1+0.7) * 10 ); // muestra 7!
?>
Consulte tambien aviso sobre la precisión de float
Consulte Conversión de cadenas a números
El comportamiento de la conversion de integer a otros tipos es indefinido. No espere que exista un comportamiento esperado, ya que puede cambiar sin previo aviso.