2011-06-15 84 views
0

我有以下對象:PHP如何動態訪問對象?

$json = '{"response": {"status": {"message": "Success"}, "images": [{"url": "http://domain.com/images/0001.jpg"}, {"url": "http://domain.com/images/0001.jpg"}]}}'; 
$obj = json_decode($json); 

然後,我有一個數組:

$obj_path = array('response', 'images'); 

我可以在$obj訪問images像這樣$obj->$obj_path[0]->$obj_path[1]

我會怎麼做它更加動態?沿着線的東西...

$obj_path_count = count($obj_path); 
for($i=0; $i<$obj_path_count; $i++) 
{ 
    $obj_access_path .= '->' . $obj_path[$i]; //Build path to the access the object? 
} 
var_dump($obj . $obj_access_path); // Display object images 

上面的代碼提供了以下錯誤

Object類的stdClass已經無法 轉換成字符串

+0

在你的情況下,動態地做到這一點到底是什麼?你想通過變量名('$$ varName')訪問變量嗎?你想創建更簡潔的代碼?或者決定選擇哪個數組項目? – Ryan 2011-06-15 01:05:13

+0

我有很多對象和一些我需要抓取的物品。猜猜我是更簡潔的代碼後,讓我挑選數組中定義的對象的元素 – Pav 2011-06-15 01:11:53

+0

順便說一句,。在'var_dump'中應該是逗號,我相信這是錯誤。 – 2011-06-15 01:27:39

回答

3

你不能訪問像這樣的完整路徑,插值僅深入一級。你可以做這樣的事情,雖然:

$obj_access = $obj; 
foreach($obj_path as $path_item) 
{ 
    $obj_access = $obj_access->$path_item; 
} 
var_dump($obj_access); // Display object images 

在您的JSON看,雖然,我不認爲這將有助於解決這個問題是什麼問題,你想不過來解決。

+0

這正是我之後,謝謝。 – Pav 2011-06-15 01:41:13