【问题标题】:PHP json decode with number tag [duplicate]带有数字标签的PHP json解码[重复]
【发布时间】:2012-09-26 08:44:47
【问题描述】:

可能重复:
How to access object properties with names like integers?

我尝试通过以下代码从 youtube data api 解码 json 结果:

 $url="http://gdata.youtube.com/feeds/api/videos/$id?v=2&alt=jsonc";
    echo "$url".'<BR>';
    $json = file_get_contents($url,0,null,null);
    $json_output = json_decode($json);
    $items=$json_output -> data;

    $content = "{$items->content->1}";
    echo $content.'<BR>';

一切正常,但最后两行。有人可以帮忙吗?

这是 json 结果:

 {"apiVersion":"2.1","data":{"id":"9jDg3Dh28rE","uploaded":"2012-10-04T03:45:49.000Z",
........
 "content":{"5":"http://www.youtube.com/v/9jDg3Dh28rE?version=3&f=videos&app=youtube_gdata",
 "1":"rtsp://v5.cache8.c.youtube.com/CiILENy73wIaGQmx8nY43OAw9hMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp",
 "6":"rtsp://v5.cache4.c.youtube.com/CiILENy73wIaGQmx8nY43OAw9hMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"},"duration":2403,......}}

【问题讨论】:

  • 如果您发布代码,请尽量减少示例。例如如果一切正常,但最后两行特别有趣,其他行更少(我删除了一些仅供参考)。此外,搜索类似问题通常更有帮助。

标签: php json youtube


【解决方案1】:

您需要用{} 包装数字属性才能访问它。

$content = $items->content->{1};

你也不需要像下面这样使用双引号:

$thumbnail = "{$items->thumbnail->sqDefault}";

这应该只是

$thumbnail = $items->thumbnail->sqDefault;

【讨论】:

  • 我想您在这里已经足够长的时间了解搜索重复项的工作原理了。
  • @Leigh 是的,但我需要说明双引号的错误使用。
  • @xdazz:其实这并没有错。有人可能会认为这是多余的,但它并没有错。
  • @hakre 是的,这是我的错。我只是不喜欢多余的代码:)
  • 好吧,答案是多余的,因为OP并不关心那部分;)无论如何,寻找骗子确实更好。为此,您所说的都是多余的,我敢打赌还存在其他骗局。我的意思是 OP 在这里询问一个基本的语言特性(好吧,它有点特别),但是这是对语言语法的基本理解。请查找重复项并投票关闭。
猜你喜欢
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多