在php中使用Kimono api数据

时间:2014-09-02 03:10:37

标签: php json api

我是api的菜鸟所以请耐心等待。我试过google搜索1小时,但我对结果一无所知。

目前,我有一个带有给定示例数据的和服API:

{
  "name": "Summoners-Details",
  "count": 31,
  "frequency": "On demand",
  "version": 7,
  "newdata": false,
  "lastrunstatus": "success",
  "thisversionrun": "Tue Sep 02 2014 02:34:07 GMT+0000 (UTC)",
  "lastsuccess": "Tue Sep 02 2014 02:34:07 GMT+0000 (UTC)",
  "stats": {
    "retriedUrls": [],
    "failedUrls": [],
    "successful": 1,
    "rows": 31,
    "retried": 0,
    "failed": 0,
    "duration": 1894
  },
  "results": {
    "rank": [
      {
        "division": "Wukong's Lancers Silver-tier II"
      }
    ]
  }
}

这是我试图用来获取分区数据的PHP代码,但我什么都没得到! :

<?php
$request = "https://www.kimonolabs.com/api/c6qj1oc?apikey=xxxxxxxxxxxxxxxxxx";
$response = file_get_contents($request);
$results = json_decode($response, TRUE);

$division = $results->{'results'}->{'rank'}->{'division'};
echo $division;
?>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

TL;博士

  1. json_decode()
  2. 中删除“true”参数
  3. [0]之后添加{'rank'}

  4. 你的问题在于你如何使用json_decode() ...第二个参数(true)告诉它返回一个关联数组而不是一个对象。

    其次,该JSON的rank部分是一个数组,因此您需要使用零键来访问其值。

    数组访问将是这样的:

    $division = $results['results']['rank'][0]['division'];
    

    否则,删除true参数,它将默认为一个对象,你可以像这样访问该变量:

    $division = $results->results->rank[0]->division;
    

    以下是json_decode()的更多信息。

    请记住,从技术上讲,您已经获得的$division定义可以正常工作(添加零数组键)与对象而不是数组,我只删除了{'xxx'}括号因为它们是不必要的。

答案 1 :(得分:0)

感谢scrowler的解释,我已经能够显示我的数据了。这是工作代码:

<?php
$request = "https://www.kimonolabs.com/api/c6qj1oc?apikey=xxxxxxxxxxxxxx";
$response = file_get_contents($request);
$results = json_decode($response, TRUE);

$division = $results['results']['rank'];

foreach($division as $key => $value)
{
    echo $value['division'];
}
?>

不确定foreach循环是否真的需要但是嘿,将来可能会有用:D