您的位置:首页 > 编程语言 > PHP开发

PHP7小版本之间整型长度差异

2016-12-23 01:29 459 查看
版本:

PHP-7.0.9

win7 64bit

$id = 1234567890 //10位整数

打印结果:

int(1234567890)

$id = 12345678901 //11位整数

打印结果:

float(12345678901)

$id = 12345678901234 //14位整数

打印结果:

float(12345678901234)

$id = 123456789012345 //15位整数

打印结果:

float(1.2345678901234E+14)

结论

可以发现,10位整数(包含10位)以下打印时,均显示正常结果:整型

11位~14位,PHP7将隐式转换为float型

15位+,PHP7采用科学计数法

版本:

PHP-7.0.14

Ubuntu-16.04 64bit

$id = 1234567890123456789 //19位整数

打印结果:

int(1234567890123456789)

$id = 12345678901234567890 //20位整数

打印结果:

float(1.2345678901235E+19)

结论

可以发现,19位整数(包含19位)以下打印时,均显示正常结果:整型

20位+,采用科学计数法

为什么会在意这个差异,项目中有一个业务,为了以后分库分表考虑,采用生成的随机数(Bigint 16位),但是在两台机器上,PHP整数长度不一致,导致隐式转换,由于接口是强类型,所以Fatal error了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php