当前位置:  开发笔记 > 编程语言 > 正文

这是PHP数组访问的错误吗?

如何解决《这是PHP数组访问的错误吗?》经验,为你挑选了1个好方法。

我遇到了这个错误,其中一个数组的元素,如果它的索引是字符串"0",则无法访问.

这也不是反序列化的错误,因为这发生在我的代码中而没有调用它.

$arr = unserialize('a:1:{s:1:"0";i:5;}');
var_dump($arr["0"]); //should be 5, but is NULL
var_dump($arr[0]);   //maybe this would work?  no. NULL

我在这里做错了吗?如何访问数组的这个元素?



1> kranzky..:

是的,它看起来好像是一个错误,与PHP自动将字符串转换为整数有关.有关更多信息,请访问:http://bugs.php.net/bug.php?id = 43614

var_dump( $arr ); // => array(1) { ["0"]=>  int(5) } 
$arr2["0"]=5;
var_dump($arr2); // => array(1) { [0]=>  int(5) } 
print serialize($arr2); // a:1:{i:0;i:5;}

因此,似乎旧版本的PHP5在unserialize中不执行字符串索引到整数索引转换.

这个错误在PHP 5.2.5中报告,并在PHP 5.2.6中修复(参见http://www.php.net/ChangeLog-5.php#5.2.6).

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有