需要帮助使用 PHP 从 Riot API 解码 JSON
Need help decoding JSON from Riot API with PHP
作为一项任务的一部分,我正在尝试从 Riot API(JSON 英雄联盟的数据)中提取一些统计数据。到目前为止,我已经设法根据召唤师名称找到了召唤师 ID(用户 ID),并且我已经过滤掉了该召唤师之前(20)场比赛的 ID。但是现在我不知道如何从 JSON 数据中获取正确的值。所以我想这就是我向您展示我的代码的时候:
$matchIDs 是一个包含 20 个整数(游戏 ID)的数组
for ($i = 1; $i <= 1; $i++)
{
$this_match_data = get_match($matchIDs[$i], $server, $api);
$processed_data = json_decode($this_match_data, true);
var_dump($processed_data);
}
如上所示,我的 for 循环设置为 1,因为我只是专注于在继续所有 20 个之前找出一个。上面的示例是我如何获得匹配 ID 和召唤师 ID。我将在此处添加这些代码以进行比较:
for ($i = 0; $i <= 19; $i++)
{
$temp = $data['matches'][$i]['matchId'];
$matchIDs[$i] = json_decode($temp, true);
}
$data 是我从 JSON 页面中提取所有信息时得到的变量,这与我在第一个代码块中用来获取 $this_match_data 的方法相同。
function match_list($summoner_id, $server, $api)
{
$summoner_enc = rawurlencode($summoner);
$summoner_lower = strtolower($summoner_enc);
$curl =curl_init('https://'.$server.'.api.pvp.net/api/lol/'.$server.'/v2.2/matchlist/by-summoner/'.$summoner_id.'?api_key='.$api.'');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
现在说到问题的根源,This is where 我把我从网站上得到的数据放在一起,这样你就可以看到我在做什么。现在,通过使用以下代码,我可以获得该文件中的第一个值,即匹配 ID。
echo $processed_data['matchId'];
但我似乎无法锁定此 .json 文件中的任何其他信息。我试过输入 ['region'] 而不是 ['matchId'] 之类的东西,但没有成功,也尝试插入索引号,例如 $processed_data[0],但没有任何反应。这就是我从第一个示例中获得正确信息的方式,我真的迷失在这里。
好的,所以我想我自己已经弄明白了。通过将此添加到代码中,我可以以更人性化的方式打印出 json 文件,这应该会更容易处理数据。
echo ("<pre>");
var_dump($processed_data);
echo ("</pre>");
作为一项任务的一部分,我正在尝试从 Riot API(JSON 英雄联盟的数据)中提取一些统计数据。到目前为止,我已经设法根据召唤师名称找到了召唤师 ID(用户 ID),并且我已经过滤掉了该召唤师之前(20)场比赛的 ID。但是现在我不知道如何从 JSON 数据中获取正确的值。所以我想这就是我向您展示我的代码的时候:
$matchIDs 是一个包含 20 个整数(游戏 ID)的数组
for ($i = 1; $i <= 1; $i++)
{
$this_match_data = get_match($matchIDs[$i], $server, $api);
$processed_data = json_decode($this_match_data, true);
var_dump($processed_data);
}
如上所示,我的 for 循环设置为 1,因为我只是专注于在继续所有 20 个之前找出一个。上面的示例是我如何获得匹配 ID 和召唤师 ID。我将在此处添加这些代码以进行比较:
for ($i = 0; $i <= 19; $i++)
{
$temp = $data['matches'][$i]['matchId'];
$matchIDs[$i] = json_decode($temp, true);
}
$data 是我从 JSON 页面中提取所有信息时得到的变量,这与我在第一个代码块中用来获取 $this_match_data 的方法相同。
function match_list($summoner_id, $server, $api)
{
$summoner_enc = rawurlencode($summoner);
$summoner_lower = strtolower($summoner_enc);
$curl =curl_init('https://'.$server.'.api.pvp.net/api/lol/'.$server.'/v2.2/matchlist/by-summoner/'.$summoner_id.'?api_key='.$api.'');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
现在说到问题的根源,This is where 我把我从网站上得到的数据放在一起,这样你就可以看到我在做什么。现在,通过使用以下代码,我可以获得该文件中的第一个值,即匹配 ID。
echo $processed_data['matchId'];
但我似乎无法锁定此 .json 文件中的任何其他信息。我试过输入 ['region'] 而不是 ['matchId'] 之类的东西,但没有成功,也尝试插入索引号,例如 $processed_data[0],但没有任何反应。这就是我从第一个示例中获得正确信息的方式,我真的迷失在这里。
好的,所以我想我自己已经弄明白了。通过将此添加到代码中,我可以以更人性化的方式打印出 json 文件,这应该会更容易处理数据。
echo ("<pre>");
var_dump($processed_data);
echo ("</pre>");