Использование foreach Loop в PHP для разбора Json - PullRequest
0 голосов
/ 25 июня 2018

Я использую 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?Я использовал несколько способов, но безуспешно.

Ответы [ 4 ]

0 голосов
/ 25 июня 2018

На основе предоставленного вами кода вы можете выполнить итерацию результатов, чтобы получить всю возможную информацию из списка исполнителей / треков, например:

$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 Вы можете слегка изменить приведенный выше пример:

$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

0 голосов
/ 25 июня 2018

Foreach по результатам:

foreach ($obj['feed']['results'] as $result) {
    echo $result['collectionName'] . '<br>' . PHP_EOL;
}
0 голосов
/ 25 июня 2018

Поскольку вы не указали выходные данные массива, я предполагаю, что индекс [0] - это то, что нужно повторить.

Вам необходимо использовать $obj['feed']['results'], выполнив:

Foreach($obj['feed']['results'] as $cltn){
    Echo $cltn['collectionName'];
}
0 голосов
/ 25 июня 2018

Попробуйте сделать так с foreach () , чтобы выполнить итерацию массива key=>value, поскольку вы декодировали json как array, а не object в php.

<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 '
'; foreach ($ array ['feed'] ['results'] как $ key => $ value) { echo $ value ['collectionName']. '
'; } ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...