如何使用PHP从JSON代码获取数据?

时间:2014-07-12 21:54:35

标签: php json

我只想从json链接获取id == 0

的数据

我怎么能做到这一点!?

<?php
$claw = "https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/43216818/ranked?season=SEASON4&api_key=010ba2bc-2c40-4b98-873e-b1d148c9e379";
$z0r = file_get_contents($claw);
$gaza = json_decode($z0r, true);
foreach ($gaza['champions'] as $key => $value) {
  if ($value['id'] == 0) {
    $wins = $value['totalTripleKills'];
  }
}
?>

我的代码没有显示任何内容..

任何人都可以帮忙!?

3 个答案:

答案 0 :(得分:2)

您没有输出任何内容,只是一次又一次地分配$wins,也可能存在file_get_contents无法按预期使用https网址的问题。

使用cURL更快更容易,也是经过快速测试之后,

$value['totalTripleKills']应为$value['stats']['totalTripleKills']

<?php
$url = "https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/43216818/ranked?season=SEASON4&api_key=010ba2bc-2c40-4b98-873e-b1d148c9e379";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,  false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,  false);
$result = curl_exec($curl);
curl_close($curl);

if(empty($result)) {
    echo 'Error fetching: '.htmlentities($url).' '.curl_error($curl);

}else{

    $gaza = json_decode($result, true);

    foreach ($gaza['champions'] as $key => $value) {
        if ($value['id'] == 0) {
            echo $value['stats']['totalTripleKills'].'<br>';
        }
    }

}

这也是一个相当大的响应,所以你需要考虑缓存一段时间的结果,但这超出了问题的范围。

答案 1 :(得分:0)

您在stats数组中首先忘记输入错误,否则您无法获取totalTripleKills值,然后输出。

$claw = "https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/43216818/ranked?season=SEASON4&api_key=010ba2bc-2c40-4b98-873e-b1d148c9e379";
$z0r = file_get_contents($claw);
$gaza = json_decode($z0r, true);
foreach ($gaza['champions'] as $key => $value) {
  if ($value['id'] == 0) {
    $wins = $value['stats']['totalTripleKills'];
  }
}
echo $wins;

在解析json之前,一个有用的方法来理解数据的json结构是这个网站:http://jsonlint.com/

答案 2 :(得分:-1)

你没有输出任何东西,

<?php
$claw = "https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/43216818/ranked?season=SEASON4&api_key=010ba2bc-2c40-4b98-873e-b1d148c9e379";
$z0r = file_get_contents($claw);
$gaza = json_decode($z0r, true);
foreach ($gaza['champions'] as $key => $value) {
  if ($value['id'] == 0) {
    $wins = $value['totalTripleKills'];
  }
}
?>

试试这个

<?php
$claw = "https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/43216818/ranked?season=SEASON4&api_key=010ba2bc-2c40-4b98-873e-b1d148c9e379";
$z0r = file_get_contents($claw);
$gaza = json_decode($z0r, true);

echo "<pre>";
foreach ($gaza['champions'] as $key => $value) {
  if ($value['id'] == 0) {
    $wins = $value['totalTripleKills'];
    var_export( $wins );
  }
} 



?>