Php 从Json中提取某些信息

Php 从Json中提取某些信息,php,json,Php,Json,我最近一直在XboxAPI.com上探索XboxAPI,试图增加我实际使用API和Json数据的知识和信心。我在另一个问题上找到了一些代码,我玩了一下,得到了一些反馈,我目前使用的代码是: $url = 'https://xboxapi.com/v2/2745051201447500/presence'; $headers = array( 'X-AUTH: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ); $ch = curl_in

我最近一直在XboxAPI.com上探索XboxAPI,试图增加我实际使用API和Json数据的知识和信心。我在另一个问题上找到了一些代码,我玩了一下,得到了一些反馈,我目前使用的代码是:

$url     = 'https://xboxapi.com/v2/2745051201447500/presence';
$headers = array(
    'X-AUTH: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
在浏览器中访问页面时,我会看到以下内容:

{"xuid":2745051201447500,"state":"Online","devices":[{"type":"XboxOne","titles":[{"id":714681658,"name":"Home","placement":"Background","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"},{"id":446059611,"activity":{"richPresence":"In a Street Race."},"name":"Forza Horizon 2","placement":"Full","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"}]}]}
echo $result->devices[0]->type;
我的问题是,如何从上面提取某些信息?例如,如果我想拉“名称”并显示它,我该如何做呢?我尝试了以下几种方法:

{"xuid":2745051201447500,"state":"Online","devices":[{"type":"XboxOne","titles":[{"id":714681658,"name":"Home","placement":"Background","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"},{"id":446059611,"activity":{"richPresence":"In a Street Race."},"name":"Forza Horizon 2","placement":"Full","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"}]}]}
echo $result->devices[0]->type;
但那没用。我不知道我离正确答案还有多远,但如果有任何帮助,我将不胜感激


感谢

设备
是一个数组(请注意JSON中的
[]
),因此您需要

$result->devices[0]->type // XboxOne
                ^^^

这同样适用于
标题
——这也是一个数组,在PHP中需要
[]
取消引用。
var\u dump($result)
将向您显示一个格式良好、结构化的数组转储,并向您准确显示获取其中任何数据段所需的“路径”。

我怀疑您将需要一些类似于json\u decode()


注意:上面的内容还没有经过测试。

首先,像下面这样做一个json_解码,它将放入一个关联数组中

然后,您还需要确保对多维索引使用索引,如下所述

还有voilla——基本上,你错过了json_解码

$result = json_decode(curl_exec($ch));
$result->devices[0]->type;
呃,我也忘了

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

您知道curl没有输出到字符串变量。

感谢您回复Marc B。我已经添加了您建议的内容,但是我在浏览器中仍然得到完全相同的结果,它没有执行echo。我已经用我正在使用的新代码编辑了我的原始问题。再次感谢。感谢airtech的回复。不幸的是,我在浏览器中看到的只有Json。你上面的代码应该显示“Xbox One”,对吗?是的,应该显示,是的。你能做一个var_转储(json_decode(curl_exec($ch))吗?我已经添加了var_dump(json_decode(curl_exec($ch)),但它仍然以与以前完全相同的格式显示json。刚刚更正了我的答案-忘记将curl的输出更改为output为astring