Maison > Questions et réponses > le corps du texte
Lors de l'utilisation de la fonction is_int, PHP renvoie false lorsque le nombre à déterminer dépasse 9 chiffres. Pourquoi ?
滿天的星座2017-05-16 13:06:03
. . . .
Les entiers entiers ont une plage, et cette plage est différente de la plage de 32 bits (valeur maximale : 2^31 - 1) et 64 bits (valeur maximale : 2^63 - 1) liée à la version de la plateforme. À ce stade, les nombres hors plage seront interprétés comme du type float, donc le jugement de la fonction is_int() sera faux. Ce qui suit est un débordement d'entier 64 bits :
$large_number = 9223372036854775807;
var_dump(is_int($large_number)); // true
$large_number = 9223372036854775808;
var_dump(is_int($large_number)); // false
世界只因有你2017-05-16 13:06:03
Selon le manuel du site officiel de php :
La longueur des mots entiers dépend de la plate-forme, bien que le maximum habituel soit d'environ deux milliards (signé 32 bits). La valeur maximale sur les plateformes 64 bits se situe généralement autour de 9E18, sauf pour les versions antérieures à PHP 7 sous Windows, qui étaient toujours en 32 bits. PHP ne prend pas en charge les entiers non signés. La longueur de mot d'une valeur entière peut être représentée par la constante PHP_INT_SIZE Depuis PHP 4.4.0 et PHP 5.0.5, la valeur maximale peut être représentée par la constante PHP_INT_MAX, et la valeur minimale peut être représentée par la constante PHP_INT_MIN en PHP. 7.0.0 et versions ultérieures.
Donc pour un entier de 32 bits, signé 2^31=2147483648
(environ 2 milliards), c'est un nombre à 10 chiffres, donc pour la situation que vous avez évoquée, il est vrai que plus de 9 chiffres renverront faux.