PHP Arrays — Gracenote API

Я использую PHP (php-gracenote от Rich Adams) для подключения к Gracenote API и получения данных о различных альбомах / компакт-дисках. У меня работают основы — я могу подключиться, создать запрос и получить некоторые данные, но я не совсем понимаю, как работать с массивом данных, которые отправляет Gracenote.

Я хочу иметь возможность искать альбом / CD и отображать список треков в этом альбоме.

Код, который я использую, выглядит следующим образом:

<?php
include("php-gracenote/Gracenote.class.php");

$clientID  = "XXXXXXX";
$clientTag = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

$api = new Gracenote\WebAPI\GracenoteWebAPI($clientID, $clientTag);

$userID = $api->register();

//$results = $api->searchAlbum("Beatles", "Revolver");
//var_dump($results);

$i=0;
while (isset($results[$i])) :
echo $results[$i]["album_artist_name"] . '<br/>';
echo $results[$i]["album_title"] . ', ' . $results[$i]["album_year"] .     '<br/><br/>';
//echo $results[$i]["tracks"]["track_title"]; // my feeble attempt to grab relevant data

$i++;
endwhile;

?>

Когда я использую:

$results = $api->searchAlbum("Beatles", "Revolver");
var_dump($results);

… кажется, что данные возвращаются в виде большого (многомерного ???) массива, и я могу видеть названия треков тут и там среди данных, но я не могу их извлечь и отобразить.

Наверное, мой вопрос: как мне работать со сложным массивом в PHP для извлечения необходимых данных?

Вот первый раздел возвращаемых данных, когда я использую var_dump ($ results) — слишком много, чтобы показать все это):

array(10) {
[0]=&gt;
array(13) {
["album_gnid"]=&gt;
string(40) "7309349-74C2EDC353EA348726D4EDC7B705712F"["album_artist_name"]=&gt;
string(11) "The Beatles"["album_title"]=&gt;
string(8) "Revolver"["album_year"]=&gt;
string(4) "1966"["genre"]=&gt;
array(3) {
[0]=&gt;
array(2) {
["id"]=&gt;
int(25313)
["text"]=&gt;
string(4) "Rock"}
[1]=&gt;
array(2) {
["id"]=&gt;
int(25332)
["text"]=&gt;
string(9) "60's Rock"}
[2]=&gt;
array(2) {
["id"]=&gt;
int(25491)
["text"]=&gt;
string(16) "Psychedelic Rock"}
}
["album_art_url"]=&gt;
string(0) ""["artist_image_url"]=&gt;
string(99) "http://akamai-b.cdn.cddbp.net/cds/2.0/image-artist/0907/CA7C/7B5E/3CF8_medium_front.jpg?cid=1920256"["artist_bio_url"]=&gt;
string(164) "http://web.content.cddbp.net/cds/2.0?id=0AC9F1E7DEF84B87&amp;client=1920256&amp;class=biography&amp;type=text/plain&amp;tag=02-FAyNX5AA5SimoRYGji2zgKvh9LliCiQjTJOnammvNzcmKGySJQ-0g"["review_url"]=&gt;
string(161) "http://web.content.cddbp.net/cds/2.0?id=F4B46CE1824CDFF5&amp;client=1920256&amp;class=review&amp;type=text/plain&amp;tag=02jCWyg580ffijjOeNpgMYD-33vNd9OY0N72B5abMJa3FKUaP3bDIZcA"["artist_origin"]=&gt;
array(4) {
[0]=&gt;
array(2) {
["id"]=&gt;
int(29894)
["text"]=&gt;
string(14) "Western Europe"}
[1]=&gt;
array(2) {
["id"]=&gt;
int(29967)
["text"]=&gt;
string(14) "United Kingdom"}
[2]=&gt;
array(2) {
["id"]=&gt;
int(30296)
["text"]=&gt;
string(7) "England"}
[3]=&gt;
array(2) {
["id"]=&gt;
int(30793)
["text"]=&gt;
string(9) "Liverpool"}
}
["artist_era"]=&gt;
array(1) {
[0]=&gt;
array(2) {
["id"]=&gt;
int(29487)
["text"]=&gt;
string(6) "1960's"}
}
["artist_type"]=&gt;
array(2) {
[0]=&gt;
array(2) {
["id"]=&gt;
int(29422)
["text"]=&gt;
string(4) "Male"}
[1]=&gt;
array(2) {
["id"]=&gt;
int(29436)
["text"]=&gt;
string(10) "Male Group"}
}
["tracks"]=&gt;
array(14) {
[0]=&gt;
array(6) {
["track_number"]=&gt;
int(1)
["track_gnid"]=&gt;
string(40) "7309350-3A1042A706E8D9391D2728421B86C7BD"["track_title"]=&gt;
string(6) "Taxman"["track_artist_name"]=&gt;
string(11) "The Beatles"["mood"]=&gt;
array(0) {
}
["tempo"]=&gt;
array(0) {
}
}
[1]=&gt;
array(6) {
["track_number"]=&gt;
int(2)
["track_gnid"]=&gt;
string(40) "7309351-8D7A9A90FA399B346AA64396FA6C697A"["track_title"]=&gt;
string(13) "Eleanor Rigby"["track_artist_name"]=&gt;
string(11) "The Beatles"["mood"]=&gt;
array(0) {
}
["tempo"]=&gt;
array(0) {
}
}

Совет очень ценится.

0

Решение

// Loop through each item that is returned
foreach($results as $result){
// you should now be at each item.
echo $result['album_artist_name'];
echo $result['album_title'];
// And so on until you have echoed what you want.

// loop subarrays
foreach($result['genre'] as $genre){
// again echo anything here you would like.
echo $genre['text'];
}
}

Мое мнение здесь … использовать print_r ($ results) Я считаю, что он выводит данные в более удобочитаемом формате.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]