我正在开展一个个人项目来帮助整理我的iTunes资料库,为此我正在使用iTunes search api。
我目前的代码允许我自动解析系列本身的信息,但我正在尝试更改它,以便它能识别一季中有多少集,并为它们解析信息,我不得不为一个季节编辑13集的PHP,然后为下一个编辑27集。
这是我目前使用的代码;
$response = file_get_contents($itune_url);
$obj = utf8_decode($response);
$results = json_decode($obj);
$artwork = $results->results[0]->artworkUrl100;
$collectionViewUrl = $results->results[0]->collectionViewUrl;
$collectionType = $results->results[0]->collectionType;
$collectionId = $results->results[0]->collectionId;
$collectionName = $results->results[0]->collectionName;
$trackCount = $results->results[0]->trackCount;
$collectionPrice = $results->results[0]->collectionPrice;
$genre = $results->results[0]->primaryGenreName;
$trackNumber1 = $results->results[1]->trackNumber;
$trackName1 = $results->results[1]->trackName;
$shortDescription1 = $results->results[1]->shortDescription;
$longDescription1 = $results->results[1]->longDescription;
无论如何设置我的PHP以便识别$ trackCount并自动生成下一组结果?例如
$trackNumber1 = $results->results[1]->trackNumber;
$trackName1 = $results->results[1]->trackName;
然后:
$trackNumber2 = $results->results[2]->trackNumber;
$trackName2 = $results->results[2]->trackName;
任何帮助/建议都将不胜感激,谢谢!
答案 0 :(得分:0)
您可以充分利用foreach
(docs)循环JSON结果和嵌套数组(docs)来保存所有剧集信息。这可能会将您对JSON结果的制作感降低到类似以下内容。
$url = 'http://itunes.apple.com/search?term=firefly&media=tvShow&entity=tvEpisode&attribute=showTerm';
$json = file_get_contents($url);
$data = json_decode($json);
$results = array();
foreach ($data->results as $r) {
$season = $r->collectionName;
$episode = $r->trackNumber;
$results[$season][$episode] = $r;
}
结果数组具有以下结构。
array (
'Firefly, Season 1' =>
array (
1 =>
array (
'wrapperType' => 'track',
'kind' => 'tv-episode',
'artistId' => 151198837,
'collectionId' => 151801083,
'trackId' => 151961947,
'artistName' => 'Firefly',
'collectionName' => 'Firefly, Season 1',
'trackName' => 'Serenity',
...
),
...
),
)
这意味着您可以按编号访问各个剧集,例如$results['Firefly, Season 1'][3]
用于剧集Bushwhacked
,或者您可以循环播放一个季节:
foreach ($results['Firefly, Season 1'] as $episode) {
echo $episode['trackName'], PHP_EOL, $episode['longDescription'], PHP_EOL;
}
当然,如果你不关心这个季节(你的所有结果都会回归一个节目的一个季节?)或者想要在结果中获得多个节目(你在搜索什么?!)那么同样的过程可以使用,只是使用不同的标准和结果数组结构的更多(或更少)深度。