JSON的第一个元素(fanart.tv API)

时间:2014-05-03 18:01:59

标签: php json element

我一直在研究我的一个项目,只是为了学习更多关于PHP和JSON处理的知识。我现在使用Fanart.tv API并按照我的意愿完成所有操作,但我遇到了一些问题。我想在JSON文件中获取FIRST数组,但到目前为止我尝试过的所有内容都不能解决问题。

有人想帮我吗? 这是我正在尝试使用的JSON文件;

{"Eminem":{"mbid_id":"b95ce3ff-3d05-4e87-9e01-c97b66af13d4","artistbackground":[{"id":"14795","url":"http://assets.fanart.tv/fanart/music/b95ce3ff-3d05-4e87-9e01-c97b66af13d4/artistbackground/eminem-4ed3e35d6f3da.jpg","likes":"3"}

这是我的PHP文件中实际有效的代码;

$img = $json->Eminem->artistbackground[0]->url;

但是,我想要打印图像并回显艺术家的名字 - 在本例中为“Eminem”。我试过“$ json [0]”而只是“[0]”,但后来我得到了错误信息。任何人都知道如何做到这一点,阅读JSON文件?我得到的脚本会自动从MusicBrainz更新URL($ mbid)中的ID,所以如果它是另一位艺术家而不是Eminem我从中读取了JSON文件 - 我的代码不起作用。

到目前为止,这是我的PHP代码;

$backgroundURL = 'http://api.fanart.tv/webservice/artist/a93e666f14a34d979b3e3617eab2f340/'.$mbid.'/json/artistbackground/1/1';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $backgroundURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; curl)");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$json = curl_exec($ch);
curl_close($ch);

$json  = json_decode($json);
$bg = $json->Eminem->artistbackground[0]->url;

echo '<img src="'.$bg.'" height="540" width="960">'

只要JSON文件适用于艺术家Eminem,它就可以使用。只要我得到另一位艺术家,就不会这样我需要$ bg字符串中JSON文件中的第一个元素。

任何人都知道如何做到这一点? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

current()函数返回当前键的值(第一个):

$json  = json_decode($json);
$first = current($json);
$bg    = $first->artistbackground[0]->url;