json / php:如何从嵌套和非嵌套数组中获取信息

时间:2014-09-26 12:31:29

标签: php arrays json api

我正在使用RIOT API(英雄联盟),我有这个webhost,我在那里测试我的代码:20ff.net。我正在使用此代码,输出显示在网站上。

ini_set("display_errors", "1"); error_reporting(E_ALL);

$ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'https://euw.api.pvp.net/api/lol/euw/v2.5/league/challenger?type=RANKED_SOLO_5x5&api_key=***');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);

    curl_close($ch);

$json = json_decode($response, true);

    foreach($json['entries'] as $entry){

        echo $entry['playerOrTeamName'] . ' - Division: ' . $entry['division'] . ' - ' . $entry['leaguePoints'] . ' LP' . "<br/>";
        }

这些都是嵌套数组,但是包含entries数组之外的信息的是1个数组,它被称为name。名称包含玩家所在分区的名称,例如:挑战者,钻石,铂金,金,银或铜牌。我想在$entry['division']前面使用它,因此输出将是Division: Diamond 1(例如)而不是Division: 1。这是参考指南:https://developer.riotgames.com/api/methods#!/828/2921

我如何解决这个问题,我没有尝试使用两个foreach命令。

编辑json响应:

{
"name":"Miss Fortune's Weaponmasters",
"tier":"CHALLENGER",
"queue":"RANKED_SOLO_5x5",
"entries": [{
    "playerOrTeamId":"43211669",
    "playerOrTeamName":"Zednic",
    "division":"I",
    "league‌​Points":708,
    "wins":394,
    "isHotStreak":false,
    "isVeteran":false,
    "isFreshBlood":false‌​,
    "isInactive":false
}]

1 个答案:

答案 0 :(得分:0)

假设我从你的评论中得到了正确的json结构:

$json = json_decode($response, true);
foreach($json['entries'] as $entry){
    echo $entry['playerOrTeamName'] . ' - Division: ' . $json['tier'] . ' ' . $entry['division'] . ' - ' . $entry['leaguePoints'] . ' LP' . "<br/>";
}

关键是你可以从循环内部访问原始数组,例如$json['tier']而不仅仅是当前的循环项