[PHP]json_decode した stdClass Object を扱う

stdClass Object
(
    ["sample"] => stdClass Object
        (
            ["color"] => red
        )

    ["0"] => stdClass Object
        (
            ["color"] => green
        )

)

json_decode をすると第2引数を指定しない限り上のようになることがあります。
sample の color を取り出すなら、「$foo->sample->color」で良いのですが、
[0] のほうを取り出そうとして「$foo->0->color」とやってもエラーになります。
かといって $foo->item(0) みたいなものがあるわけでもないようなので、
素直に Array にキャストするのが普通ですが、もし強引にそのまま扱いたいのであれば

$foo->{'0'}->color

のようにすればとりあえず取れます。

とは言え扱いにくいので json_decode($foo, true) として連想配列にしておいたほうがいいと思います。


2012/11/24 追記:
この方法はキーがString型の場合のみ使用できます。