Les types
PHP Manual

Les entiers

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

Voir aussi :

Syntaxe

Les entiers peuvent être spécifiés en notation décimale (base 10), hexadécimale (base 16), ou octale (base 8), optionnellement précédée d'un signe (- ou +).

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.

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 décimales)
$a 0x1A// un nombre héxadecimal (équivalent à 26 décimales)
?>

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]+

integer     : [+-]?decimal
            | [+-]?hexadecimal
            | [+-]?octal

La taille d'un entier est dépendant de la plate-forme, cependant, une valeur maximale d'environ 2 billions est habituelle (cela correspond à 32 bits signés). 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, et la valeur maximale, en utilisant la constante PHP_INT_MAX depuis PHP 4.4.0 et PHP 5.0.5.

Avertissement

Si un nombre invalide est fourni dans un entier octal (i.e. 8 ou 9), le reste du nombre est ignoré.

Exemple #2 Bizarrerie avec les octales

<?php
var_dump
(01090); // 010 octal = 8 décimales
?>

Débordement d'entier

Si PHP rencontre un nombre supérieur au maximal d'un entier, il sera interprété comme un nombre à virgule flottante. 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 à virgule flottante.

<?php
$large_number 
=  2147483647;
var_dump($large_number);
// Affiche : int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// Affiche : float(2147483648)

// c'est vrai également pour les héxadécimaux compris entre 2^31 et 2^32-1:
var_dump0xffffffff );
// Affiche : float(4294967295)

// N'est pas vrai pour les héxadécimaux supérieures à 2^32-1:
var_dump0x100000000 );
// Affiche : int(2147483647)

$million 1000000;
$large_number =  50000 $million;
var_dump($large_number);
// Affiche : float(50000000000)
?>
Avertissement

Malheureusement, il y a un bogue dans PHP qui fait que ceci ne fonctionne pas toujours correctement, lorsque des nombres négatifs sont demandés. Par exemple, le résultat de -50000 * $million est -429496728. Cependant, lorsque les 2 opérandes sont positives, il n'y a aucun problème.

Ceci a été résolu en PHP 4.1.0.

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().

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

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 à virgule flottante 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), 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 !

Avertissement

Ne convertissez jamais une fraction inconnue en un entier, ceci peut engendrer un résultat inattendu.

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


Les types
PHP Manual