【问题标题】:Array navigation in PHP [duplicate]PHP中的数组导航[重复]
【发布时间】:2018-10-24 18:23:00
【问题描述】:

我正在尝试获取 api(steam api) 响应作为变量。

{"response":{"players":[{"steamid":"XXXXXXXXXXXXXXXXXXXX","communityvisibilitystate":3,"profilestate":1,"personaname":"The value I want to get","lastlogoff":XXXXXXXXXX,"profileurl":"XXX","avatar":"X","avatarmedium":"X","avatarfull":"X","personastate":1,"realname":"X","primaryclanid":"X","timecreated":XXXXXXXXXX,"personastateflags":0}]}}

格式化:https://pastebin.com/8QtLzwVX

目前我正在使用以下代码来获取数组:

$url="http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamids=" . $sid;
//  Initiate curl
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);

我不知道如何从我在$result 中得到的 JSON 中获取 personaname 值并将其放入像 $personaname 这样的变量中。

【问题讨论】:

  • 你试过json_decode吗?
  • @DavidWinder 是的。 json_decode($result, true).
  • 你能在curl_exec之后显示$result的var_dump吗?

标签: php arrays json curl steam-web-api


【解决方案1】:

试试这个:

<?php

$json_array = json_decode($result, true);
echo $json_array['response']['players'][0]['personaname'];

【讨论】:

  • 它没有回应任何东西。
  • 让我上网查一下
  • 根据我的测试,您的 JSON 数组无效,所有字段都必须使用双引号,数字和十进制数字除外。所以你需要修复两行timecreated,lastlogoff。当你修复它时,其他一切都应该正常工作。 Ofc 你需要根据你的代码调整变量:-)
  • 我知道,在真正的 API 响应中,“x”是数字。我只是为了隐私而更换了它们。但是我通过使用它来工作:print_r($array-&gt;response-&gt;players[0]-&gt;personaname); where $array = json_decode($result);
  • 老兄,同样的事情,你只是得到了对象而不是数组。当您不将 true 作为 json_decode 中的第二个参数时,它将返回对象并且您需要像您一样访问它,否则它将返回一个数组,就像上面的解决方案一样。 PHP手册:当为TRUE时,返回的对象将被转换为关联数组。
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多