Я использую iTunes RSS генератор, чтобы получить горячие треки, теперь я использую следующий способ для анализа JSON:
<?php $json_string = 'https://rss.itunes.apple.com/api/v1/in/apple-music/hot-tracks/all/10/explicit.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata,true); $cltn = $obj['feed']['results'][0]['collectionName']; echo $cltn; ?>
Теперь, когда мы знаем, что он вернет только 1 collectionName.JSON-запрос возвращает 10 результатов.Как я могу получить их все, используя цикл foreach?Я использовал несколько способов, но безуспешно.
На основе предоставленного вами кода вы можете выполнить итерацию результатов, чтобы получить всю возможную информацию из списка исполнителей / треков, например:
$json_string = 'https://rss.itunes.apple.com/api/v1/in/apple-music/hot-tracks/all/10/explicit.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata,true); $cltn = $obj['feed']['results']; function test_print($item, $key) { echo "<strong>".$key."</strong>: ".$item."<br>"; } foreach($cltn as $key => $c) { echo "Result No ".($key+1)."<br>"; array_walk_recursive($c, 'test_print'); }
в случае, если вы хотите показать только artistName и collectionName Вы можете слегка изменить приведенный выше пример:
artistName
collectionName
$json_string = 'https://rss.itunes.apple.com/api/v1/in/apple-music/hot-tracks/all/10/explicit.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata,true); $cltn = $obj['feed']['results']; foreach($cltn as $c) { echo $c['artistName'].": ".$c['collectionName']."<br>"; }
Вы можете попробовать все вышеперечисленное в PHP Fiddle
Foreach по результатам:
foreach ($obj['feed']['results'] as $result) { echo $result['collectionName'] . '<br>' . PHP_EOL; }
Поскольку вы не указали выходные данные массива, я предполагаю, что индекс [0] - это то, что нужно повторить.
Вам необходимо использовать $obj['feed']['results'], выполнив:
$obj['feed']['results']
Foreach($obj['feed']['results'] as $cltn){ Echo $cltn['collectionName']; }
Попробуйте сделать так с foreach () , чтобы выполнить итерацию массива key=>value, поскольку вы декодировали json как array, а не object в php.
key=>value
array
object
<code><?php $json_string = 'https://rss.itunes.apple.com/api/v1/in/apple-music/hot-tracks/all/10/explicit.json'; $jsondata = file_get_contents($json_string); $array = json_decode($jsondata,true); # printing resulted array just for debugging purpose print '<pre>'; print_r($array); print '