PHP数组键值Key越界后涉及的数据类型及值范围浅谈
来源:互联网 发布:尚观mysql视频教程 编辑:程序博客网 时间:2024/04/27 23:47
做项目时遇到一个问题:
获取项目接口返回的数据存入PHP数组作为Key,但是取出来值就不一样了,哔---
经过一番大脑回路,发现竟然是PHP数组Key越界,既然遇到就简单记录一下,哎,这一生犯的错实在太多。 ╯□╰
通过PHP创建关联数组的时候,键值Key如果是数值型(可通过is_numeric()判断),则会在int有效范围内被自动转换为int型,如果超过int有效范围就会有问题,这就涉及到数组键值Key作为int型时的有效范围判断。
PHP的int型数据取值范围,与操作系统相关,32位系统上为2的31次方,即-2147483648到2147483647,64位系统上为2的63次方,即-9223372036854775808到9223372036854775807。
那么一旦PHP数组键值Key存入的数值型数据超过有效范围,如果该数值型数据是int型就会有问题,是string型数值就不再转换为int型。
如下键值Key为int型越界
<?php $arr=array( 2147483647=>'test1', 2147483648=>'test2' ); print_r($arr);?>输出结果为:
Array ( [2147483647] => test1 [-2147483648] => test2 )
如下键值Key为数值型string越界
<?php $arr=array( '2147483647'=>'test1', '2147483648'=>'test2' ); foreach($arr as $k => $v) { if(is_int($k)) { echo "int型:".$k."<br />"; } else { echo "string型:".$k."<br />"; } }?>
输出结果为:
int型:2147483647string型:2147483648
阅读全文
1 0
- PHP数组键值Key越界后涉及的数据类型及值范围浅谈
- php数组练习之----查询数组中某key 的键值相同的个数、数组的格式转换、合并数组
- php对二维数组按指定键值key排序
- 浅谈js的键值对key和value
- android面试所涉及的范围及学习方向
- 数据类型、数组越界和宏定义引发的悲剧
- Hash#merge 把Key相同的键值装进数组
- PHP重建索引数组的键值
- PHP数组数字键值的最大值问题
- PHP获取数组的键名与键值
- PHP获取数组的键名与键值
- php 循环打印数组的键值
- MYSQL中支持的数据类型及取值范围
- 当数组访问越界后
- php 数组 键值 特性
- 关于TableView刷新后报数组越界的错误原因
- C语言的数据类型及范围
- 数据类型的取值范围
- Some good thing will happen.
- boost内存管理-堆内存managed_heap_memory的使用(未完成)
- Hbase报错问题
- jmp用法以及原理分析
- 初来乍到
- PHP数组键值Key越界后涉及的数据类型及值范围浅谈
- not authorized on local to execute command
- javase线程基本运用
- 入侵取证调查
- MySQL5.6数据库获取指定schema下的表目录和字段明细
- HDU 4003 Find Metal Mineral【经典树形DP背包】
- 互金平台使用redis分布式锁的场景分析
- 2 栈和队列
- spring bean中this内部调用事物不起作用