2015-11-13 161 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