Правильный доступ к объекту stdClass?

У меня есть объект stdClass, который выглядит так:

stdClass Object
(
    [0] => stdClass Object
        (
            [id1] => Fri Feb 22 00:02:15 +0000 2013
            [id2] => 21312
            [id3] => 13552412
        )

    [1] => stdClass Object
        (
            [id1] => Fri Feb 22 00:02:15 +0000 2013
            [id2] => 21331
            [id3] => 13495842
        )
)

Как получить доступ к идентификаторам? Я нашел несколько похожих вопросов, но ни один из них мне не помог.
Предположим, что объект хранится в $myVar.

Я пробовал $myVar->0->id1, $myVar->id1, $myVar->[0]->id1, $myVar->['0']->id1, $myVar[0]->id1, но все безуспешно.


person Sven    schedule 23.02.2013    source источник
comment
Откуда вы взяли этот объект? Для меня это выглядит как приведенный массив, поэтому я спрашиваю себя, почему он приводится к объекту.   -  person KingCrunch    schedule 23.02.2013
comment
@KingCrunch Я думаю, это ответ REST API от Twitter.   -  person Sven    schedule 23.02.2013
comment
Это будут фигурные скобки $myvar->{'0'}->id1   -  person Michael Berkowski    schedule 23.02.2013
comment
Если это JSON, используйте второй параметр для json_decode. Остальное: array.include-once.org/   -  person mario    schedule 23.02.2013
comment
Вы также можете просто сделать $myvar = (array)$myvar;, чтобы вернуть его обратно в массив и получить доступ как $myvar[0]->id1;   -  person Michael Berkowski    schedule 23.02.2013
comment
$myvar = (array)$myvar; полностью сделал это для меня :-) Опубликуйте это как ответ, и я приму его.   -  person Sven    schedule 23.02.2013


Ответы (2)


Как я и предполагал в комментариях, структура не выглядит так, как будто она когда-либо предназначалась для обращения с объектом. Вместо того, чтобы возиться с объектом, пусть json_decode() вместо этого возвращает ассоциативный массив.

$data = json_decode($json, true);
echo $data[0]['id1'];
person KingCrunch    schedule 23.02.2013

вы можете использовать $myvar->{'0'}->id1

или вы можете сначала использовать его как массив, а затем:

$arr = (array) $myobj;
$arr[0]->id1;
person Oden    schedule 23.02.2013