我正在使用RIOT API(传说联盟),我有这个网络主机来测试我的代码: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
数组之外的信息,它被称为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",
"leaguePoints":708,
"wins":394,
"isHotStreak":false,
"isVeteran":false,
"isFreshBlood":false,
"isInactive":false
}]
假设我从您的评论中得到了正确的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']
,而不仅仅是当前循环项