PHP长整型在32位系统中强制转化溢出
CleverCode近期遇到一个PHP项目整形转化问题,mysql有一个字段id是bigint的,里面有长整型,如id = 5147486396。可是php代码因为历史原因却部署在多台机器中,当中A机器32位系统中,B机器64系统中。如今的问题是64系统中页面訪问正常。32位系统中訪问出错了。原因是php整形溢出。
1 A机器演示
1.1 获取A机器系统位数
# getconf LONG_BIT
1.2 整形转化代码
<? php $id = 5147486396;
echo '$id:'.$id."\r\n"; $value = (int)$id;
echo '(int)$id:'.$value."\r\n"; $value = intval($id);
echo 'intval($id):'.$value."\r\n"; $value = filter_var($id, FILTER_VALIDATE_INT);
echo 'filter_var($id, FILTER_VALIDATE_INT):'."\r\n";
var_dump($value); ?>
1.3 执行结果
2 B机器演示
2.1 获取B机器系统位数
2.2 整形转化代码
<?php $id = 5147486396;
echo '$id:'.$id."\r\n"; $value = (int)$id;
echo '(int)$id:'.$value."\r\n"; $value = intval($id);
echo 'intval($id):'.$value."\r\n"; $value = filter_var($id, FILTER_VALIDATE_INT);
echo 'filter_var($id, FILTER_VALIDATE_INT):'."\r\n";
var_dump($value); ?>
2.3 执行结果
3 结论
64 位平台下的最大值一般是大约 9E18。
PHP 不支持无符号整数。Integer 值的字长能够用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后。最大值能够用常量 PHP_INT_MAX 来表示。
版权声明:
1)原创作品,出自"CleverCode的博客",严禁转载,否则追究版权法律责任。
2)原创地址:http://blog.csdn.net/clevercode/article/details/46423103。
3)分类地址(PHP程序猿技术精粹):http://blog.csdn.net/clevercode/article/category/3169943(博客持续添加。关注请收藏)。
4)欢迎大家关注CleverCode博客很多其它的精彩内容:http://blog.csdn.net/CleverCode。
5)欢迎大家关注CleverCode的微博:http://weibo.com/CleverCode。
PHP长整型在32位系统中强制转化溢出的更多相关文章
- windows 32位系统中进程最大可用内存空间为3GB (转)
http://msdn.microsoft.com/zh-cn/library/ms189334.aspx 进程地址空间 所有 32 位应用程序都有 4 GB 的进程地址空间(32 位地址最多可以映射 ...
- C++获取Windows7 32位系统中所有进程名(类似于任务管理器中的进程)
代码是网上查找资料,然后自己调试,修改之后可以运行. 系统:win7 32位,VS2008 ------------------------------------------------------ ...
- Python基础:数值(布尔型、整型、长整型、浮点型、复数)
一.概述 Python中的 数值类型(Numeric Types)共有5种:布尔型(bool).整型(int).长整型(long).浮点型(float)和复数(complex). 数值类型支持的主要操 ...
- 黄聪:Windows 64位系统中安装Android SDK“系统找不到指定的文件Java.exe”解决方法
明明已经在64位window7中安装好了64位版本的jdk,为什么android SDK安装程序却识别不到jdk呢?先看看报错: Java SE Development Kit (JDK) not f ...
- python基础知识2——基本的数据类型——整型,长整型,浮点型,字符串
磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 对于Python ...
- Python基础:1.数据类型(空、布尔类型、整型、长整型、浮点型、字符串)
提示:python版本2.7,windows系统 Python提供的基本数据类型:空.布尔类型.整型.长整型.浮点型.字符串.列表.元组.字典.日期 1.空(None) None,是一个特殊的值,不能 ...
- 收集几个不错的最新win10系统64位和32位系统Ghost版下载
系统来自转载:系统妈 ◆ 版本特点 该版本安装后可利用微软公开的Windows10 KMS密钥激活,且右小角无版本水印. KMS客户端密钥:NPPR9-FWDCX-D2C8J-H872K-2YT43, ...
- Java把长整型时间转成字符串日期
数据库里存放的是timestamp格式,前端取得后是这种:1436255550710长整型时间截转换成"2015-07-07"这种格式呢? import java.io.IOExc ...
- 32位系统下使用4GB内存
64位系统的驱动还有不少缺陷,果断重装回32位系统,但是4gb的内存,明显是浪费啊. 所以必须利用起来. 我没有采用不稳定的破解内核的做法,采用了虚拟硬盘的做法.因为个人觉得这样其实利用效率更高. 方 ...
随机推荐
- sudo不用在输入密码
在任意的路径之下执行:sudo visudo 的命令对文件进行修改: 其中的: sudo ALL=(ALL) %admin ALL=(ALL) 这两个语句为: sudo ALL=(ALL) NOPAS ...
- POJ 1821 Fence(单调队列优化DP)
题解 以前做过很多单调队列优化DP的题. 这个题有一点不同是对于有的状态可以转移,有的状态不能转移. 然后一堆边界和注意点.导致写起来就很难受. 然后状态也比较难定义. dp[i][j]代表前i个人涂 ...
- MYSQL锁表问题的解决方法
本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...
- 洛谷 P3914 染色计数
P3914 染色计数 题目描述 有一颗NN个节点的树,节点用1,2,\cdots,N1,2,⋯,N编号.你要给它染色,使得相邻节点的颜色不同.有MM种颜色,用1,2,\cdots,M1,2,⋯,M编号 ...
- UILite-MFC/WTL/DirectUI界面库
之前写了UILite库介绍: http://blog.csdn.net/zhangzq86/article/details/9093945 如今UILite库能够使用git訪问了: https://g ...
- 局部加权回归、欠拟合、过拟合 - Andrew Ng机器学习公开课笔记1.3
本文主要解说局部加权(线性)回归.在解说局部加权线性回归之前,先解说两个概念:欠拟合.过拟合.由此引出局部加权线性回归算法. 欠拟合.过拟合 例如以下图中三个拟合模型.第一个是一个线性模型.对训练数据 ...
- Caused by: java.lang.ClassNotFoundException: com.njupt.libgdxbase.MainActivity
在使用libgdx来开发游戏时.假设遇到这样的问题.非常可能是由于你没有在libgdx的项目中导入Android的现骨干jar包导致的. 解决方法例如以下: 右击项目---"build pa ...
- 阿里云部署Docker(9)----Dockerfile脚本定制镜像
本文为原创文章.转载需注明转自:http://blog.csdn.net/minimicall? viewmode=contents 技术爱好者都是比較懒的.而docker又是开发人员支持起来的.所以 ...
- lightoj--1214--Large Division(大数取余)
Large Division Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Submit ...
- RHEL启动错误:Kernel panic - not syncing:Attempted to kill init!解决方案
Virtual Box虚拟机启动RHEL系统报错,错误信息如下: 解决方案: 在GRUB引导界面按下e键,进入下图所示界面. 选择第二项,按下e键,进入编辑状态 在结尾追加enforcing=0,按下 ...