2015-11-13 160 views
1

我有一个简单的答案我做不到的解决方案:PHP方括号对象变量 - 如何调用变量

的var_dump(OBJ)=

object(stdClass)#15 (3) { 
    ["properties"]=> 
    object(stdClass)#14 (2) { 
    ["user_name"]=> 
    string(4) "somename" 
    ["email_address"]=> 
    string(12) "[email protected]" 
    ["arrays"]=> 
    object(stdClass)#17 (1) { 
    ["sites[]"]=> 
    object(stdClass)#18 (4) { 
     ["0"]=> 
     int(1) 
     ["1"]=> 
     int(1) 
     ["2"]=> 
     int(0) 
     ["3"]=> 
     int(0) 
    } 
    } 
} 

如何调用的网站[]'对象在我的'obj'?

我试过如下:

obj->sites[] 
obj->{'sites[]'} 

两个选项不工作...

+0

@Machavity中,被转储的变量不是数组,它是一个'stdClass'对象。 – Ian

回答

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]; 
+0

大声笑,我忘了在那里添加'数组',愚蠢的我。我已经清理了命名。感谢您的帮助 – Abayob