2014-01-07 5 views
0

Я кодирую приложение поиска iTunes с помощью API поиска iTunes. Пока у меня все работает нормально, но вот проблема, с которой я сталкиваюсь. Если вы хотите искать все типы мультимедиа по определенному ключевому слову, он возвращает результаты без особого порядка. У вас могут быть фильмы, подкасты, песни и т. Д., Смешанные случайным образом в результатах. API, насколько я знаю, позволяет сортировать только по последней дате выпуска.Поиск результатов поиска в Itunes Search по «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']; 

I Я пытаюсь обернуть голову вокруг группировки значениями ключей. Создать другой массив и перебрать по $kind = $data['results']?

ответ

1

Казалось бы, вам нужно будет построить массив с «видом» как измерение. Так что-то вроде этого:

$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

Спасибо Майк, это именно то, что я искал. Он работает отлично. –

Смежные вопросы