获取一个数字的PHP对象属性
我试图从JSON数据解码到一个PHP对象中获取属性。这只是一个YouTube数据API请求,它返回一个内容对象喜欢的视频对象;获取一个数字的PHP对象属性
[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” - 这是非常合情合理的。但是,我怎样才能得到一个数字的属性的价值?
我确定我应该知道这一点。提前致谢。
这应该工作:
$object->content->{'5'}
那did'er。谢谢! – 2012-03-07 17:54:17
没有工作。捕获一个'未定义的属性:stdClass :: $ 5'。使用PHP版本5.5.7 – Geo 2014-04-04 21:59:08
如果变量是已经转换为对象的数组,则此工作流程不起作用。详细的解释和例子可以在这里找到:http://*.com/a/10333200/58795 – 2015-05-29 20:40:52
另一种可能性是使用第二个参数来json_decode:
$obj = json_decode(str, true);
你得到的,而不是一个PHP对象数组,然后你可以索引像往常一样:
$obj['content'][5]
这将工作以及,谢谢。 – 2012-03-07 17:54:57
更清洁恕我直言,感谢提示=) – Can 2015-12-16 07:43:32
另一个aproach是cas将对象映射到数组。
$array = (array) $object;
$array['content'][5];
这是不正确的。您只将'$ object'对象转换为数组。 '$ content'属性仍然是一个对象。你还需要添加:'$ array ['content'] =(array)$ array ['content'];'。这就是为什么JSON编码/解码解决方案更简单。它也转换所有的子对象。 – 2015-05-29 20:59:23
正确,只适用于一维数组 – 2016-06-17 14:02:23
JSON编码,然后解码您的对象传递true作为解码函数中的第二个参数。这将返回一个关联数组。
$array = json_decode(json_encode($object), true);
现在你可以使用你的新阵列
echo $array['content']['5'];
使用$object->content->{'5'}
将不工作,如果对象是由铸造数组对象创建的。
更详细的描述可以在这里找到:https://*.com/a/10333200/58795
PHP的更恼人的细微差别的绝对之一。 – 2012-03-07 17:52:59
[如何使用整数名称访问对象属性?](http://*.com/questions/10333016/how-to-access-object-properties-with-names-like-integers) – nawfal 2015-11-22 12:18:29
[This解释它完美](https://*.com/q/10333016/6521116) – 2017-06-06 13:43:17