【问题标题】:PHP | Accessing an Object within an ObjectPHP |在对象中访问对象
【发布时间】:2015-04-02 09:29:27
【问题描述】:

您好,我对在 PHP 中使用 API 非常陌生。这是我的第一次尝试。到目前为止,我已经得到了以 JSON 格式返回的数据。我有json_decoded() 它和var_dump() 正在返回我只能作为对象中的对象来计算的内容。我的 PHP 经验不足可能会出现在这里。

下面是我正在使用的成功检索数据的代码。

    $url = 'https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/elderofaegis?api_key=RemovedForSO';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_URL, $url);
    $output = curl_exec($ch);
    curl_close($ch);
    $result = json_decode($output);
    var_dump($result);

下面是var_dump() 返回的内容

object(stdClass)[1]
  public 'elderofaegis' => 
     object(stdClass)[2]
      public 'id' => int 38186794
      public 'name' => string 'ElderOfAegis' (length=12)
      public 'profileIconId' => int 785
      public 'summonerLevel' => int 30
      public 'revisionDate' => float 1427933098000

有谁知道我如何通过对象的名称访问该对象。我的意思是引号中包含的部分,例如,如果我想呼应我想要的名称,则类似于(伪下方)。

echo $result->object['name'];

上面的例子是伪的,因为我想不通。 对于任何想知道这是英雄联盟 API 的人

谢谢。

【问题讨论】:

  • 那么问题是你无法访问它还是什么

标签: php json api object


【解决方案1】:

试试

$result->elderofaegis->name;

【讨论】:

  • 这确实有效,但如何填充中间部分“elderofaegis”? $result->elderofaegis->name; 因为我是在请求之后才得到的,所以说 iw 以通过 id 请求相同的语句
  • 结构由 api 响应定义。您需要编写某种转换器来将响应转换为您想要的对象。
【解决方案2】:

您可以将true 作为第二个参数添加到json_decode($json, true) 这会将整个对象转换为一个数组,这将使其更易于访问引用此

json-decode.php

【讨论】:

  • 我看到它现在以数组的形式返回
猜你喜欢
  • 2018-06-11
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2018-06-12
  • 2023-03-23
相关资源
最近更新 更多