PHP数组关于数字键名的问题 - 企业简介 - 新余市思创暖通工贸有限公司
现在的位置: 主页 > 企业简介 > 文章正文
PHP数组关于数字键名的问题
作者:新余市思创暖通工贸有限公司 来源:www.jxsichuang.com 发布时间:2017-09-07 13:12:52
PHP数组关于数字键名的问题

以下是对PHP数组数字键名的几点总结:

键名长度只能在 int 长度范围内,超过int 范围后将会出现覆盖等混乱情况

在键名长度为 int 范围内存取值时,PHP会强制将数字键名转换为 int 数值型

数字键名长度大于19位时,将变成 0


键名正常长度时,字符串或数值类型一样

$i = 126545165; $arr['126545165'] = 'abc'; $arr[126545165] = 'uio'; var_dump($arr); echo '
'; var_dump(isset($arr[$i]));


\



长度超过整型时,键名混乱vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">$i = 12312312312312; $arr['1000000000147483649'] = 'abc'; $arr[1000000000147483649] = 'uio'; var_dump($arr); echo '
'; var_dump(isset($arr[$i]));


\




长度超过20位时,键名将变成 0

$i = 123123123123123123123123123123; var_dump($i); echo '
'; $arr[123123123123123123123123123123] = 'abc'; $arr[strval(123123123123123123123123123123)] = 'abc'; var_dump($arr); echo '
'; var_dump(isset($arr[$i])); echo '
'; var_dump(isset($arr[strval($i)])); echo '
'; var_dump(array_keys($arr));

\




将变量直接作为键名存取,结果又有不同

$i = 123123123123123; var_dump($i); echo '
'; $arr[$i] = 'abc'; $arr[strval($i)] = 'abc'; var_dump($arr); echo '
'; var_dump(isset($arr[$i])); echo '
'; var_dump(isset($arr[strval($i)])); echo '
'; var_dump(array_keys($arr));

\


从上面的几种测试来看:

如果键名为数字,专题系统,且范围在 int 以内,字符串或者 int 不会对存取有什么影响

如果长度大于 int 时会自动转化为 float ,再转换进行存取出现各种混乱情况,甚至直接变成 0,所以最好是统一转换为 string 类型


$i = 123123123123123123123123123123; $j = '123123123123123123123123123123'; $arr1[strval($i)] = 'abc'; $arr2[$j] = 'abc'; var_dump($arr1); echo '
'; var_dump($arr2);




所以在动态操作 PHP 数组时,如果不能确定键名是否会出现数字或者长度大于 int ,则统一将键名 strval 转换为 字符串来操作最为稳妥

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:神农架网站制作 http://shennongjia.666rj.com


  • 上一篇:解密Facebook产品的开发流程
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 新余市思创暖通工贸有限公司 ALL RIGHTS RESERVED.
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100