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

时间:2012-03-07 17:29:53

标签: php json object properties

我正在尝试将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
                )

否则

$object->content->5

引发“意想不到的T_DNUMBER” - 这非常有意义。但是,如何获取属性值的数值?

我确定我应该知道这一点。提前谢谢。

4 个答案:

答案 0 :(得分:68)

这应该有效:

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

答案 1 :(得分:18)

另一种可能性是将第二个参数用于json_decode:

$obj = json_decode(str, true);

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

$obj['content'][5]

答案 2 :(得分:1)

JSON编码,然后将您的对象解码为true,作为解码函数中的第二个参数。这将返回一个关联数组。

$array = json_decode(json_encode($object), true);

现在您可以使用新阵列

echo $array['content']['5'];

如果通过将数组转换为对象来创建对象,则使用$object->content->{'5'}

可在此处找到更详细的说明:https://stackoverflow.com/a/10333200/58795

答案 3 :(得分:0)

另一种方法是将对象转换为数组。

$array = (array) $object;
$array['content'][5];