编程语言
首页 > 编程语言> > 将对象转换为数组的PHP错误

将对象转换为数组的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