2012-12-09 5 views
1

last.fm api를 사용하여 last.fm에서 상위 6 명의 아티스트를 추출하려고합니다. JSON 데이터를 가져 와서 잘 출력 할 수 있습니다. 그러나 실제로 특정 데이터 조각을 사용할 때는 손실이 발생합니다. 제가 사용하고 싶은 유일한 것은 아티스트의 이름입니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.last.fm api에서 반환 한 JSON 데이터를 사용하여

<?php 
    $content = get_data('http://ws.audioscrobbler.com/2.0/?method=chart.gettopartists&api_key=xxxxxxxxxxxxxx&format=json&limit=6'); 
    foreach ($content->artist as $artist) { 
echo '<li>'; 
echo "{$artist->name}\n"; 
echo '</li>'; 
} 
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
}   
?> 

데이터는 다음과 같습니다

{"artists":{"artist":[{"name":"Coldplay","playcount":"757749","listeners":"111884","mbid":"cc197bad-dc9c-440d-a5b5-d52ba2e14234","url":"http:\/\/www.last.fm\/music\/Coldplay","streamable":"1","image":[{"#text":"http:\/\/userserve-ak.last.fm\/serve\/34\/210303.jpg","size":"small"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/64\/210303.jpg","size":"medium"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/126\/210303.jpg","size":"large"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/252\/210303.jpg","size":"extralarge"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/500\/210303\/Coldplay.jpg","size":"mega"}]},{"name":"Rihanna","playcount":"943551","listeners":"102321","mbid":"69989475-2971-49aa-8c53-5d74af88b8be","url":"http:\/\/www.last.fm\/music\/Rihanna","streamable":"1","image":[{"#text":"http:\/\/userserve-ak.last.fm\/serve\/34\/79835799.png","size":"small"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/64\/79835799.png","size":"medium"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/126\/79835799.png","size":"large"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/252\/79835799.png","size":"extralarge"},{"#text":"http:\/\/userserve-ak.last.fm\/serve\/_\/79835799\/Rihanna+PNG.png","size":"mega"}]}}} 

어떤 도움도 대단히 감사하겠습니다!

답변

1

json_decode이므로 return json_decode($data);을 사용해야합니다. 이것은 traveres 수있는 개체의 반환 데이터를 켭니다. 연관 배열의 경우 return json_decode($data, true);을 사용하십시오. http://php.net/manual/en/function.json-decode.php

+0

이 변경을했는데 이제이 오류가 나타납니다. 경고 : 잘못된 인수가 /home/xptdbiyf/public_html/instagramTest.php의 foreach()에서 47 번째 줄에 입력되었습니다. 특정 데이터 조각. –

+0

'$ content'는 전체 배열이므로 존재하지 않는 변수에 액세스하려고합니다. 아티스트 세트는'$ content-> artist '보다는'$ content-> artists-> artist'가 액세스 할 수 있습니다. – qooplmao

+0

고마워요! 너는 나의 영웅이야!!!!!!! –

관련 문제