标签:data-access php arrays
我遇到了这个错误,其中一个数组的元素,如果它的索引是字符串“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).
标签:data-access,php,arrays 来源: https://codeday.me/bug/20190730/1585436.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。