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-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各版本之间差异
- 比较同一数据库不同版本间数据表之间差异
- PHP 5.3 与老版本函数差异总结
- mysql各个主要版本之间的差异
- mongodb不同版本之间有很大的差异
- 利用eclipse比较两个文件的代码差异或者一个文件不同版本之间的异同
- SVN导出两个版本之间的差异文件
- 不同版本PHP之间cURL的区别
- Xcode6与Xcode5版本之间控件差异
- PHP5.5新特征以及有可能的版本差异
- Git对比两个版本之间差异,并导出压缩升级包!
- PHP VC9/VC6 TS/NTS版本之间的区别
- 分享下mysql各个主要版本之间的差异
- 分享下mysql各个主要版本之间的差异
- git提取出两个版本之间的差异文件并打包
- PHP 5.3.0及以上版本已经内置mysqlnd驱动, 所以安装php时并不需要预先安装mysql, 你可以在安装php之后再安装mysql(这与之前版本的php安装顺序差异较大). mysql
- 比较同一数据库不同版本间数据表之间差异
- PHP语言特性和各版本的差异
- git提取出两个版本之间的差异文件并打包
- Moq4在.NET3.5和.NET4版本之间的差异