一个有趣的php数组下标问题
2012-12-14 11:35
288 查看
测试代码
<?php
$arr=array();
$t1=13500000000000;
$t2=13500000000001;
$arr[$t1]=1;
$arr[$t2]=1;
var_dump($arr);
?>
结果如下
array
917788672 => int 1
917788673 => int 1
我们本意是一个key=>value的数组,现在key不对了。
从网上找到的原因:
字符串下标会自动转化为长整数下标,规则如下:
1. 全部为数字,但是不能有前导0,比如arKey="0123"不会转化成123
2. 不能超过long的表示范围(LONG_MIN,LONG_MAX),即(-2147483648,2147483647)
解决办法换字符串即可
<?php
$arr=array();
$t1="13500000000000";
$t2="13500000000001";
$arr[$t1]=1;
$arr[$t2]=1;
var_dump($arr);
?>
结果如下
array
'13500000000000' => int 1
'13500000000001' => int 1
<?php
$arr=array();
$t1=13500000000000;
$t2=13500000000001;
$arr[$t1]=1;
$arr[$t2]=1;
var_dump($arr);
?>
结果如下
array
917788672 => int 1
917788673 => int 1
我们本意是一个key=>value的数组,现在key不对了。
从网上找到的原因:
字符串下标会自动转化为长整数下标,规则如下:
1. 全部为数字,但是不能有前导0,比如arKey="0123"不会转化成123
2. 不能超过long的表示范围(LONG_MIN,LONG_MAX),即(-2147483648,2147483647)
解决办法换字符串即可
<?php
$arr=array();
$t1="13500000000000";
$t2="13500000000001";
$arr[$t1]=1;
$arr[$t2]=1;
var_dump($arr);
?>
结果如下
array
'13500000000000' => int 1
'13500000000001' => int 1
相关文章推荐
- php数组下标不为不连续的数字的问题
- 一个有趣的问题:怎么在JS的数组中去除重复元素?(JAVA实现吧..)
- php将一个字符串转变成键值对数组的效率问题
- 关于php析构函数的一个有趣问题
- 【php数组 面试题】无下标数组赋值问题
- php 根据一个数组对另外一个数组进行排序问题
- PHP 获取数组任意下标key的上一个prev和下一个next下标值
- PHP学习笔记——数组下标的细节问题
- (2)int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
- php 返回一个数组中特定值的所有下标
- unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,
- 记录一个问题---php序列化一个数组保存到数据库中,读取之后反序列化出错
- 用PHP解决一个有趣的字符串问题
- 【python】numpy数组按下标获取值的一个小问题
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- 指针数组,字符数组----一个很有趣的小问题
- PHP数组foreach时使用&改变值问题
- 利用for循环和条件运算符输出一个数组中最大和最小值并分别输出下标
- php数组数据量过大时报错的问题
- 一个有趣的概率问题(阿里2012校园招聘——运维笔试)