我有一个简单的答案,我无法解决:
var_dump(obj)=
object(stdClass)#15 (3) {
["properties"]=>
object(stdClass)#14 (2) {
["user_name"]=>
string(4) "somename"
["email_address"]=>
string(12) "test@test.com"
["arrays"]=>
object(stdClass)#17 (1) {
["sites[]"]=>
object(stdClass)#18 (4) {
["0"]=>
int(1)
["1"]=>
int(1)
["2"]=>
int(0)
["3"]=>
int(0)
}
}
}
如何在'obj'中调用'sites []'对象?
我尝试了以下内容:
obj->sites[]
obj->{'sites[]'}
这两个选项都不起作用......
答案 0 :(得分:3)
清理生成该对象的代码可能更好,但您应该能够通过以下方式访问sites[]
对象:
$sites = $obj->arrays->{'sites[]'};
但是$sites
仍然是一个对象,所以你需要以类似的尴尬方式访问它的元素:
echo $sites->{'0'};
最好在那时将它强制转换为数组:
$sites = (array) $obj->arrays->{'sites[]'};
然后您可以作为数组访问:
echo $sites[0];
编辑,接缝无法访问由数字字符串索引的数组元素。
一个更好的选择(正如我刚发布的SO question所发现的那样)将使用get_object_vars
:
$sites = get_object_vars($obj->arrays->{'sites[]'});
然后你可以作为一个数组访问:
echo $sites[0];