将对象转换为数组的PHP错误
作者:互联网
我之前有这个问题,并且得出结论,这是5.2.5中的错误.好吧,至少在我看来,它在5.2.6中仍然无效:
请让我知道它是否损坏或对您有用:
$obj = new stdClass();
$obj->{"foo"} = "bar";
$obj->{"0"} = "zero";
$arr = (array)$obj;
//foo -- bar
//0 -- {error: undefined index}
foreach ($arr as $key=>$value){
echo "$key -- " . $arr[$key] . "\n";
}
从stdClass转换数组后,有什么方法可以“修复”数组?
解决方法:
在我看来,这绝对像是个bug(PHP 5.2.6).
您可以像这样修复数组:
$arr = array_combine(array_keys($arr), array_values($arr));
据报道在this bug report,但标记为伪造… the documentation说:
The keys are the member variable
names, with a few notable exceptions:
integer properties are unaccessible;
标签:stdclass,arrays,php 来源: https://codeday.me/bug/20191210/2103898.html