## Les entiers

Un entier est un nombre appartenant à la classe ℤ = {..., -2, -1, 0, 1, 2, ...}.

Voir aussi :

- Les entiers de longueur arbitraire / GMP
- Les nombres à virgule flottante
- Les précisions arbitraires / BCMath

### Syntaxe

Les entiers peuvent être spécifiés en notation décimale (base 10), hexadécimale (base 16), octale (base 8), ou binaire (base 2). L'opérateur de négation peut être utilisé pour désigner un entier négatif.

Les entiers littéraux binaires sont disponibles depuis PHP 5.4.0.

Pour utiliser la notation octale, précédez le nombre d'un 0 (zéro). Pour utiliser la notation hexadécimale, précédez le nombre d'un 0x. Pour utiliser la notation binaire, précédez le nombre d'un 0b.

Exemple #1 Les entiers littéraux

`<?php
$a = 1234; // un nombre décimal
$a = -123; // un nombre négatif
$a = 0123; // un nombre octal (équivalent à 83 en décimal)
$a = 0x1A; // un nombre héxadecimal (équivalent à 26 en décimal)
$a = 0b11111111; // un nombre binaire (équivalent à 255 en decimal)
?>`

Formellement, la structure d'un entier littéral est :

    decimal     : [1-9][0-9]*
                | 0

    hexadecimal : 0[xX][0-9a-fA-F]+

    octal       : 0[0-7]+

    binary      : 0[bB][01]+

    integer     : decimal
                | hexadecimal
                | octal
                | binary

La taille d'un entier est dépendant de la plate-forme, cependant, une valeur maximale d'environ 2 milliards est habituelle (cela correspond à 32 bits signés). Les plateformes 64-bit ont habituellement une valeur maximale d'environ 9E18, sauf pour Windows avant PHP 7, qui est toujours en 32 bit. PHP ne supporte pas les entiers non-signés. La taille d'un entier peut être déterminée en utilisant la constante `PHP_INT_SIZE`, la valeur maximale, en utilisant la constante `PHP_INT_MAX` depuis PHP 5.0.5, et la valeur minimale en utilisant la constante `PHP_INT_MIN` depuis PHP 7.0.0.

Avertissement

Avant PHP 7, si un nombre invalide était fourni dans un entier octal (i.e. 8 ou 9), le reste du nombre était ignoré. Depuis PHP 7, une erreur d'analyse est émise.

### Débordement d'entier

Si PHP rencontre un nombre supérieur au maximal d'un entier, il sera interprété comme un nombre décimal. De la même façon, une opération qui résulte en un nombre supérieur au nombre maximal d'un entier, retournera un nombre décimal.

Exemple #2 Dépassement d'entier sur un système 32-bit

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

Exemple #3 Dépassement d'entier sur un système 64-bit

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

Il n'y a pas d'opérateur de division entière en PHP. 1/2 contient en fait, float(0.5). La valeur peut être convertie en un entier en l'arrondissant, en utilisant la fonction round().

> Note: À partir de PHP 7.0.0, la fonction intdiv() est disponible pour la division d'entier.

`<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>`

### Conversion en entier

Pour convertir explicitement une valeur en un entier, utilisez soit le mot-clé (int), soit (integer). Cependant, dans la plupart des cas, ce mot-clé n'est pas nécessaire vu qu'une valeur sera automatiquement convertie si un opérateur, une fonction ou une structure de contrôle demande un entier en guise d'argument. Une valeur peut également être convertie en un entier en utilisant la fonction intval().

Si une resource est convertie vers un integer, alors le résultat sera l'identifiant unique de la resource assigné par PHP à l'exécution.

Voir aussi le transtypage.

#### Depuis un booléen

`FALSE` correspond à 0 (zéro), et `TRUE` correspond à 1 (un).

#### Depuis un nombre à virgule flottante

Lorsque l'on convertit un nombre décimal en un entier, le nombre sera arrondi vers zéro.

Si le nombre à virgule flottante est au delà des limites des entiers (habituellement, +/- 2.15e+9 = 2^31 sur les plate-formes 32-bit et +/- 9.22e+18 = 2^63 sur les plate-formes 64-bit autre que Windows), le résultat sera indéfini, sachant que le nombre à virgule flottante n'a pas une précision suffisante pour donner un résultat entier exact. Aucune alerte n'est émise lorsque ce comportement survient !

> Note:

> A partir de PHP 7.0.0, au lieu d'être indéfini et dépendant de la plateforme, NaN et Infinity seront toujours égal à zéro lors d'une conversion en nombre entier integer.

Avertissement

Ne convertissez jamais une fraction inconnue en un entier, ceci peut engendrer des résultats inattendus.

`<?php
echo (int) ( (0.1+0.7) * 10 ); // Affiche 7 !
?>`

Voir aussi la section sur les alertes concernant la précision des nombres à virgule flottante.

#### Depuis des chaînes de caractères

Voir la section sur la conversion des chaînes en nombres

#### Depuis NULL

`NULL` est toujours converti en zéro (0).

#### Depuis d'autres types

Attention

Le comportement de la conversion en un entier est indéfini depuis les autres types. Ne rapporter aucun comportement observé, sachant qu'ils peuvent changer sans avertissement.