PHP Entiers


Exemple

Les entiers en PHP peuvent être spécifiés nativement en base 2 (binaire), base 8 (octal), base 10 (décimal) ou base 16 (hexadécimal).

$my_decimal = 42;
$my_binary = 0b101010;
$my_octal = 052;
$my_hexadecimal = 0x2a;

echo ($my_binary + $my_octal) / 2;
// Output is always in decimal: 42

Les entiers ont une longueur de 32 ou 64 bits, selon la plate-forme. La constante PHP_INT_SIZE contient la taille entière en octets. PHP_INT_MAX et (depuis PHP 7.0) PHP_INT_MIN sont également disponibles.

printf("Integers are %d bits long" . PHP_EOL, PHP_INT_SIZE * 8);
printf("They go up to %d" . PHP_EOL, PHP_INT_MAX);

Les valeurs entières sont automatiquement créées en fonction des besoins à partir de valeurs flottantes, booléennes et chaînes. Si un transtypage explicite est nécessaire, cela peut être fait avec la distribution (int) ou (integer) :

$my_numeric_string = "123";
var_dump($my_numeric_string);
// Output: string(3) "123"
$my_integer = (int)$my_numeric_string;
var_dump($my_integer);
// Output: int(123)

Le dépassement d'entier sera géré par la conversion en flottant:

$too_big_integer = PHP_INT_MAX + 7;
var_dump($too_big_integer);
// Output: float(9.2233720368548E+18)

Il n'y a pas d'opérateur de division en nombres entiers en PHP, mais il peut être simulé en utilisant un transtypage implicite, qui «arrondit» toujours en supprimant simplement la partie flottante. Depuis PHP version 7, une fonction de division en nombre entier a été ajoutée.

$not_an_integer = 25 / 4;
var_dump($not_an_integer);
// Output: float(6.25)
var_dump((int) (25 / 4)); // (see note below)
// Output: int(6)
var_dump(intdiv(25 / 4)); // as of PHP7
// Output: int(6)

(Notez que les parenthèses supplémentaires autour de (25 / 4) sont nécessaires car la distribution (int) a une priorité plus élevée que la division)