【问题标题】:json Problems to echo, arraysjson 回显问题,数组
【发布时间】:2012-06-29 23:23:44
【问题描述】:

我正在编写一个脚本,它将使用 steam api,并且我选择使用 json 作为响应格式。 所以我使用了有和没有 jason_decode() 的 var_dump,它似乎没问题。 但无法打印出来,或回显它。

获取 json 数据的脚本

<?php
$id = $_GET['SteamId'];
$get = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=API_KEY_REMOVED_FOR_SECURITY&steamids=$id",true);
$data = json_decode($get);
//var_dump($data);
echo $data->realname;
?>

所以,我使用带有 json_decode 的 var_dump 是这样的。

object(stdClass)#1 (1) { ["response"]=> object(stdClass)#2 (1) { ["players"]=> array(1) { [0]=> object(stdClass)#3 (15) { ["steamid"]=> string(17) "76561198053511970" ["communityvisibilitystate"]=> int(3) ["profilestate"]=> int(1) ["personaname"]=> string(9) "Undefined" ["lastlogoff"]=> int(1340978067) ["profileurl"]=> string(41) "http://steamcommunity.com/id/Heisteknikk/" ["avatar"]=> string(114) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd.jpg" ["avatarmedium"]=> string(121) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd_medium.jpg" ["avatarfull"]=> string(119) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd_full.jpg" ["personastate"]=> int(1) ["realname"]=> string(7) "Andreas" ["primaryclanid"]=> string(18) "103582791430704052" ["timecreated"]=> int(1322427688) ["loccountrycode"]=> string(2) "NO" ["locstatecode"]=> string(2) "09" } } } }

还有来自 json 的原始数据。

{
    "response": {
        "players": [
            {
                "steamid": "76561198053511970",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Undefined",
                "lastlogoff": 1340978067,
                "profileurl": "http:\/\/steamcommunity.com\/id\/Heisteknikk\/",
                "avatar": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd.jpg",
                "avatarmedium": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd_medium.jpg",
                "avatarfull": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd_full.jpg",
                "personastate": 1,
                "realname": "Andreas",
                "primaryclanid": "103582791430704052",
                "timecreated": 1322427688,
                "loccountrycode": "NO",
                "locstatecode": "09"
            }
        ]

    }
}

我一直在谷歌上搜索有关使用“echo $data->realname;”打印 json 的信息。 所以我不知道我做错了什么,所以它不能回显数据。

【问题讨论】:

  • $data->response->players[0]->realname
  • @kingcoyote 效果很好,我不熟悉使用 json,所以这是一个很大的帮助。

标签: php json


【解决方案1】:

简介

嘿,这是一个非常古老的问题,但因为这里没有答案。

在解码JSON 时,你做对了 PHP 具有内置函数json_decode,它可以轻松地为你解码函数:

$json = '{...}';
$obj = json_decode($json, [ASSOC_ARRAY = FALSE]);

您可以设置为 bool 的第二个参数用于关联数组,该数组将从以下位置更改提及:

$obj->response;

$obj['response'];

响应

现在你说你需要来自玩家的realname,这就像通过玩家在数组中的位置获取它一样简单,或者只是循环遍历数组:

echo $obj->response->players[0]->realname; // Andreas

或者如果您有多个用户:

for( $i = 0; $i < count($obj->response->players); $i++ ) {
  echo $obj->response->players[$i]->realname;
}

这将显示所有realname(s)

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多