获取一个数字的PHP对象属性

B. *_*ess 31 php json properties object

我正在尝试将JSON数据中的属性解码为PHP对象.这只是一个YouTube数据API请求,它返回一个内容对象喜欢的视频对象;

[content] => stdClass Object
                (
                    [5] => https://www.youtube.com/v/r4ihwfQipfo?version=3&f=videos&app=youtube_gdata
                    [1] => rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
                    [6] => rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
                )
Run Code Online (Sandbox Code Playgroud)

$object->content->5
Run Code Online (Sandbox Code Playgroud)

引发"意想不到的T_DNUMBER" - 这非常有意义.但是如何获得一个数字属性的值?

我相信我应该知道这一点.提前致谢.

小智 70

这应该工作:

$object->content->{'5'}

  • 没工作.捕获了一个`Undefined属性:stdClass :: $ 5`.使用PHP 5.5.7版 (5认同)
  • 如果变量是已转换为对象的数组,则此工作流程不起作用.可在此处找到详细说明和示例:http://stackoverflow.com/a/10333200/58795 (5认同)

小智 18

另一种可能是使用第二个参数来json_decode:

$obj = json_decode(str, true);
Run Code Online (Sandbox Code Playgroud)

你得到一个数组而不是PHP对象,然后你可以照常索引:

$obj['content'][5]
Run Code Online (Sandbox Code Playgroud)