2014-02-28 107 views
1

我试图从youtube api获取YouTube频道横幅。 但这很奇怪。获取随机输出json

我用这个代码:

$json1 = file_get_contents("http://gdata.youtube.com/feeds/api/partners/$channel/branding/default?key=[api-key]&alt=json"); 
$data1 = json_decode($json1, true); 
$banner = $data1['entry']['yt$option'][15]['$t']; 
echo $banner; 

现在奇怪的事情,当我刷新页面TE我得到每次一个新值。但有时它会留下一个值,这就是我所需要的,但经过一番thime值被改变......

这是JSON代码:

{ 
    "version":"1.0", 
    "encoding":"UTF-8", 
    "entry":{ 
     "xmlns":"http://www.w3.org/2005/Atom", 
     "xmlns$yt":"http://gdata.youtube.com/schemas/2007", 
     "id":{ 
     "$t":"http://gdata.youtube.com/feeds/api/partners/rebasenetwork/branding/default" 
    }, 
    "published":{ 
    "$t":"2014-02-28T22:08:37.000Z" 
    }, 
    "updated":{ 
    "$t":"2014-02-28T22:08:37.000Z" 
    }, 
    "category":[ 
    { 
     "scheme":"http://schemas.google.com/g/2005#kind", 
     "term":"http://gdata.youtube.com/schemas/2007#branding" 
    } 
    ], 
    "link":[ 
    { 
     "rel":"self", 
     "type":"application/atom+xml", 
     "href":"http://gdata.youtube.com/feeds/api/partners/rebasenetwork/branding/default" 
    }, 
    { 
     "rel":"edit", 
     "type":"application/atom+xml", 
     "href":"http://gdata.youtube.com/feeds/api/partners/rebasenetwork/branding/default" 
    } 
    ], 
    "yt$option":[ 
    { 
     "$t":"0", 
     "name":"channel.banner.image_height.int" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.hd.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_tablet_banner.jpg?v=52d6ad2b", 
     "name":"channel.banner.tablet.medium.image.url" 
    }, 
    { 
     "$t":"https://lh6.googleusercontent.com/-6xCc8OBY5Qk/UtatKX2WY3I/AAAAAAAAAAY/6-vpTOgd0yU/w854-fcrop64=1,00000000ffffffff/channels4_banner.jpg", 
     "name":"channel.banner.tv.low.image.url" 
    }, 
    { 
     "$t":"https://lh6.googleusercontent.com/-6xCc8OBY5Qk/UtatKX2WY3I/AAAAAAAAAAY/6-vpTOgd0yU/w1280-fcrop64=1,00000000ffffffff/channels4_banner.jpg", 
     "name":"channel.banner.tv.medium.image.url" 
    }, 
    { 
     "$t":"#000000", 
     "name":"channel.global.color" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_banner.jpg?v=52d6ad2b", 
     "name":"channel.banner.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner_low.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.low.image.url" 
    }, 
    { 
     "$t":"True", 
     "name":"channel.modules.show_comments.bool" 
    }, 
    { 
     "$t":"https://lh6.googleusercontent.com/-6xCc8OBY5Qk/UtatKX2WY3I/AAAAAAAAAAY/6-vpTOgd0yU/w2120-fcrop64=1,00000000ffffffff/channels4_banner.jpg", 
     "name":"channel.banner.tv.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_tablet_banner_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.tablet.hd.image.url" 
    }, 
    { 
     "$t":"Welcome to our network Channel. We help Youtubers to earn money and grow with their channel. Being famous on youtube is one of the things you dream about, isn't it? Let us help make your dreams true!\n\nWith us you can choose your own partnership, You also select what you want to earn from your youtube channel! Are you ready to start growing? Partner Now!", 
     "name":"channel.global.description.string" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner_medium_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.medium_hd.image.url" 
    }, 
    { 
     "$t":"https://lh6.googleusercontent.com/-6xCc8OBY5Qk/UtatKX2WY3I/AAAAAAAAAAY/6-vpTOgd0yU/w1920-fcrop64=1,00000000ffffffff/channels4_banner.jpg", 
     "name":"channel.banner.tv.high.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.medium.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.image.url" 
    }, 
    { 
     "$t":"True", 
     "name":"channel.related_channels.show.bool" 
    }, 
    { 
     "$t":"KQvIpdiWrSI", 
     "name":"channel.unsubscribed_trailer.video_id.string" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_tablet_banner_extra_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.tablet.extra_hd.image.url" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_tablet_banner_low.jpg?v=52d6ad2b", 
     "name":"channel.banner.tablet.low.image.url" 
    }, 
    { 
     "$t":"True", 
     "name":"channel.modules.moderate_comments.bool" 
    }, 
    { 
     "$t":"Network partner partnership rebase network pewdiepie", 
     "name":"channel.global.keywords.string" 
    }, 
    { 
     "$t":"Rebase Network", 
     "name":"channel.global.title.string" 
    }, 
    { 
     "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_mobile_banner_extra_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.mobile.extra_hd.image.url" 
    } 
    ] 
    } 
} 

这是一个我需要(只是网址):

  { 
    "$t":"http://i1.ytimg.com/u/Yd24MzwIk2gLiv79JNPGSA/channels4_tablet_banner_extra_hd.jpg?v=52d6ad2b", 
     "name":"channel.banner.tablet.extra_hd.image.url" 
    }, 

有人可以帮我吗?我真不明白为什么它的变化值每刷新..

+0

没有该项目的名称保持不变? “name”:“channel.banner.tablet.extra_hd.image.url” –

+0

您的意思是结果以不同的顺序返回?或者图像名称不同?如果图片名称不同,我真的不知道该告诉你什么。如果订单不同,我们可以找到该项目并将其取出,无论其位置如何。 – Quixrick

+0

数组'yt $ option'中的对象似乎是由其'name'属性来标识的,而不是它们在数组中的位置。不要认为你需要的对象总是在索引'15'处。这是组织数据的一种愚蠢的方式,但这就是你必须解决的问题。 – Sammitch

回答

0

你可以通过循环的结果并打印出一个地方的名称匹配channel.banner.mobile.extra_hd.image.url

$data1 = json_decode($json1, true); 

foreach ($data1['entry']['yt$option'] AS $banner) { 

    if ($banner['name'] == 'channel.banner.mobile.extra_hd.image.url') { 
     print $banner['$t']; 
    } 

} 
+0

谢谢,这是完美的工作! – user3366246