这是PHP数组访问的错误吗?
发布时间:2020-12-13 21:34:06 所属栏目:PHP教程 来源:网络整理
导读:我遇到了这个错误,其中一个数组的元素,如果它的索引是字符串“0”,则无法访问. 这也不是反序列化的错误,因为这发生在我的代码中而没有调用它. $arr = unserialize('a:1:{s:1:"0";i:5;}');var_dump($arr["0"]); //should be 5,but is NULLvar_dump($arr[0]);
我遇到了这个错误,其中一个数组的元素,如果它的索引是字符串“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 我在这里做错了吗?如何访问数组的这个元素? 解决方法
是的,它看起来好像是一个错误,与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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |