易百教程

PHP整数溢出

如果 PHP 遇到超出 int 类型范围的数字,它将被解释为浮点数。导致数字超出 int 类型范围的操作将改为浮点数返回。

32 位系统上的整数溢出:

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

输出结果如下:

64 位系统上的整数溢出:

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

输出结果如下: