PHP, как получить доступ к объекту динамически? - PullRequest
0 голосов
/ 15 июня 2011

У меня есть следующий объект:

$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');

Я могу получить доступ к images в $obj, вот так $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

Приведенный выше код выдает следующую ошибку

Объект класса stdClass не может быть преобразован в строку

1 Ответ

3 голосов
/ 15 июня 2011

Вы не можете получить доступ к такому полному пути, интерполяция идет только на один уровень глубиной. Вы можете сделать что-то вроде этого, хотя:

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

Хотя, глядя на ваш JSON, я не думаю, что это поможет решить проблему, которую вы пытаетесь решить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...