2014-01-07 136 views
0

我使用iTunes Search API編碼iTunes搜索應用程序。到目前爲止,我有一切正常工作,但這是我遇到的問題。如果您想通過特定關鍵字搜索所有媒體類型,它會以特定順序返回結果。您可能會在結果中隨機混合電影,播客,歌曲等。據我所知,API只允許您按最近的發佈日期進行排序。itunes搜索API排序結果「kind」

我想按"kind":鍵對結果進行排序,按媒體類型對它們進行分組。只要按媒體類型將它們組合在一起,我就不在乎它們處於什麼特定順序。

這是帶有簡單鍵值對的JSON格式典型返回的一部分。我有它設置爲返回的最大結果,所以我可能有多達200個結果與10個不同的媒體類型與"kind":

{"wrapperType":"track", 
"kind":"song", 
"artistId":909253, 
"collectionId":120954021, 
"trackId":120954025, 
"artistName":"Jack Johnson", 

這裏的關鍵是我的結果陣列的一部分:

$iTunes = array(); 
for($i=0; $i<count($data['results']); $i++) { 
$kind = $data['results'][$i]['kind']; 
$artistId = $data['results'][$i]['artistId']; 
$collectionId = $data['results'][$i]['collectionId']; 
$trackId = $data['results'][$i]['trackId']; 
$artistName = $data['results'][$i]['artistName']; 
$trackName = $data['results'][$i]['trackName']; 
$collectionName = $data['results'][$i]['collectionName']; 
$artistViewUrl = $data['results'][$i]['artistViewUrl']; 
$trackViewUrl = $data['results'][$i]['trackViewUrl']; 
$collectionViewUrl = $data['results'][$i]['collectionViewUrl']; 
$image100 = $data['results'][$i]['artworkUrl100']; 
$collectionPrice = $data['results'][$i]['collectionPrice']; 
$previewUrl = $data['results'][$i]['previewUrl']; 

我我試圖用鑰匙的價值來包圍我的頭。我是否創建另一個數組並遍歷$kind = $data['results']

回答

1

看來你需要建立一個'kind'作爲維度的數組。因此,像這樣:

$data_array = array(); 
for ($i = 0; $i <count($data['results']); $i++) { 
    $kind = $data['results'][$i]['kind']; 
    $data_array[$kind][] = $data['results'][$i]; 
} 

然後,您可以用這樣的陣列工作:

foreach ($data_array as $kind => $kind_array) { 
    // echo out any category headers based on $kind 
    foreach($kind_array as $item) { 
     // echo out each individual item within this kind group 
    } 
} 
+0

感謝邁克,這正是我一直在尋找。它完美的作品。 –