【问题标题】:fetching json data in php在php中获取json数据
【发布时间】:2015-02-02 15:29:56
【问题描述】:

Json 代码为:

{"apiVersion":"2.1","data":{"id":"bLBSoC_2IY8","uploaded":"2014-04- 29T04:11:56.000Z","updated":"2014-12-04T16:08:10.000Z","uploader":"latenight","category":"Comedy","title":"Lip Sync Battle with Emma Stone","description":"Jimmy and Emma Stone square off in a lip sync battle and Emma shows she's not afraid of lightning fast lyrics.\n\nSubscribe NOW to The Tonight Show Starring Jimmy Fallon: http://bit.ly/1nwT1aN\n\nWatch The Tonight Show Starring Jimmy Fallon Weeknights 11:35/10:35c\nGet more Jimmy Fallon: \nFollow Jimmy: http://Twitter.com/JimmyFallon\nLike Jimmy: https://Facebook.com/JimmyFallon\n\nGet more The Tonight Show Starring Jimmy Fallon: \nFollow The Tonight Show: http://Twitter.com/FallonTonight\nLike The Tonight Show: https://Facebook.com/FallonTonight\nThe Tonight Show Tumblr: http://fallontonight.tumblr.com/\n\nGet more NBC: \nNBC YouTube: http://bit.ly/1dM1qBH\nLike NBC: http://Facebook.com/NBC\nFollow NBC: http://Twitter.com/NBC\nNBC Tumblr: http://nbctv.tumblr.com/\nNBC Google+: https://plus.google.com/+NBC/posts\n\nThe Tonight Show Starring Jimmy Fallon features hilarious highlights from the show including: comedy sketches, music parodies, celebrity interviews, ridiculous games, and, of course, Jimmy's Thank You Notes and hashtags! You'll also find behind the scenes videos and other great web exclusives.\n\nLip Sync Battle with Emma Stone\nhttp://www.youtube.com/fallontonight","thumbnail":{"sqDefault":"http://i.ytimg.com/vi/bLBSoC_2IY8/default.jpg","hqDefault":"http://i.ytimg.com/vi/bLBSoC_2IY8/hqdefault.jpg"},"player":{"default":"http://www.youtube.com/watch?v=bLBSoC_2IY8&feature=youtube_gdata_player","mobile":"http://m.youtube.com/details?v=bLBSoC_2IY8"},"content":{"5":"http://www.youtube.com/v/bLBSoC_2IY8?version=3&f=videos&d=AXyDziqd4CCanEZDalXV_C8O88HsQjpE1a8d1GxQnGDm&app=youtube_gdata","1":"rtsp://r7---sn-o097zuek.c.youtube.com/CkULENy73wIaPAmPIfYvoFKwbBMYDSANFEgGUgZ2aWRlb3NyIQF8g84qneAgmpxGQ2pV1fwvDvPB7EI6RNWvHdRsUJxg5gw=/0/0/0/video.3gp","6":"rtsp://r7---sn-o097zuek.c.youtube.com/CkULENy73wIaPAmPIfYvoFKwbBMYESARFEgGUgZ2aWRlb3NyIQF8g84qneAgmpxGQ2pV1fwvDvPB7EI6RNWvHdRsUJxg5gw=/0/0/0/video.3gp"},"duration":446,"aspectRatio":"widescreen","rating":4.9287434,"likeCount":"279315","ratingCount":284381,"viewCount":36983500,"favoriteCount":0,"commentCount":12125,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}}

我正在尝试在 php 数组中获取数据,循环运行良好,但变量没有值:

 foreach ($result->data as $item) {
 $title = is_null($subject) ? htmlentities($item->title) : htmlentities($item->video->title);
 $id = is_null($subject) ? $item->id : $item->video->id;
 $timestamp = is_null($subject) ? strtotime($item->uploaded) : strtotime($item->video->uploaded);
 $uploaded = date('M j, Y', $timestamp);
 $watch = is_null($subject) ? $item->player->default : $item->video->player->default;
 $image = is_null($subject) ? $item->thumbnail->sqDefault : $item->video->thumbnail->sqDefault;
 $description = is_null($subject) ? $item->description : $item->video->description;
 $viewCount = is_null($subject) ? $item->viewCount : $item->video->viewCount;
 $duration = is_null($subject) ? gmdate('H:i:s', intval($item->duration)) : gmdate('H:i:s',        intval($item->video->duration));
echo $id
echo $title
echo $description
?>

有什么问题?

【问题讨论】:

  • 你应该告诉我们问题是什么,然后我们帮你解决。
  • 问题是循环正在运行,但标题、id 和其他变量未分配任何值
  • var_dump $result 或 $item
  • json_decode JSON 的代码在哪里?
  • $result = json_decode($request);

标签: php arrays json youtube


【解决方案1】:

正如@Marc_B 试图解释的那样,您需要遍历键/值对,例如:

foreach($result->data as $key=>$value) {

然后寻找您感兴趣的$keys。

Here is a working example

但是,如果您的数据始终包含一个结果,您可以跳过循环,只需:

echo $result->data->id;
echo $result->data->title;
echo $result->data->description;

【讨论】:

    【解决方案2】:

    您使用了错误的 obj 访问路径:

    {"apiVersion":"2.1","data":{"id":"bLBSoC_2IY8","uploaded":"2014-04-etc..
    
    foreach($obj->data as $item) {
    

    会给你“blBSoC_2IY8”、“2014-04-etc...”作为$item,它们只是字符串。 $item->whatever 会失败,因为 $item 是一个字符串,而不是一个对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 2012-09-20
      相关资源
      最近更新 更多