PHP与JSON解码和蒸汽API

时间:2015-05-14 19:45:40

标签: php json api decode steam

我在这个阶段是php新手,同样关于openID库。我想为Steam用户建立一个网站,所以我需要显示他们的库存。我已经下载了一些最常用的东西,但我还需要其他东西。作为一项培训,我采取的不仅仅是库存,而是类似的。没有成功,所以我希望你能帮助我。

这是我在尝试解码其他数据时所看到的一个例子。

{
"response": {
    "players": [
        {
            "steamid": "76hidden",
            "communityvisibilitystate": 3,
            "profilestate": 1
        }
    ]

}

}

PHP中的代码看起来像

$url2 = file_get_contents("url");
$content = json_decode($url2, true);
$_SESSION['steam_steamid'] = $content['response']['players'][0]['steamid'];
$steamprofile['steamid'] = $_SESSION['steam_steamid'];

上面的这个很好用。你能解释一下为什么" steamid"之间有0。和#34;球员"?看起来会话名称很重要,对吗?我正在做一些测试,当我更改名称会话时,它没有工作。

所以这就是我正在做的事情 JSON代码:

{
    "friendslist": {
        "friends": [
            {
                "steamid": "765hidden",
                "relationship": "friend",
                "friend_since": 1428495026
            },
            {
                "steamid": "764hidden",
                "relationship": "friend",
                "friend_since": 1355599210
            },
            {
                "steamid": "764hidden",
                "relationship": "friend",
                "friend_since": 1423504205
            },
            much more friends
        ]

    }
}

所以我想得到蒸汽,我不知道如何得到它。我已尝试获得关系,因为上面已经使用了steamID:

$url3 = file_get_contents("url2");
$content2 = json_decode($url3, true);
$_SESSION['steam_relationship'] = $content2['friendslist']['friends'][0]['relationship'];
$steamfriends['friend'] = $_SESSION['steam_relationship'];

当然回声$ steamfriend ['朋友']无效。我看到制作这些PHP文件的人已经知道什么是会话名称(如果他们需要正确工作)。任何想法我在哪里可以找到它?

我感到非常惭愧,我自己无法理解。

问候。

2 个答案:

答案 0 :(得分:1)

第一个JSON

{
  "response": {
    "players": [
      {
        "communityvisibilitystate": 3, 
        "profilestate": 1, 
        "steamid": "76hidden"
      }
    ]
  }
}

转换为此PHP数组

$content = array(
    "response" => array(
        "players" => array(
            array(
                "communityvisibilitystate" => 3,
                "profilestate" => 1, 
                "steamid" => "76hidden"             
            )
        )
    )
)

玩家是一个阵列阵列(哈希数组),所以要访问第一个玩家,你需要使用索引号($content["response"]["players"][0]["steamid"]),即使玩家阵列中只有一个玩家。

要从第二个数组中获取所有steamid,您只需运行一个简单的foreach:

$friendIds = array();
foreach ($content2["friendslists"]["friends"] as $friend) {
    $friendIds[] = $friend["steamid"];
}
# array("764hidden", "764hidden", "764hidden")
var_export($friendIds);

答案 1 :(得分:0)

创建JSON时,他们使用类似于此的方法:

foreach ($record as $response){
  $content['response']['players'][] = $response;
}

$ player可能是具有多个值的数组。

这样可以更轻松地创建JSON。

首先使JSON成为一个数组:

$array = json_decode($json,true)

然后就这样:

session_start();
$_SESSION['relationship'] = $array['friendslist']['friends'][0]['relationship'];
$_SESSION['steamid'] = $array['friendslist']['friends'][0]['steamid'];
$_SESSION['steam_relationship'] = $array['friendslist']['friends'][0]['steam_relationship'];

获取所有玩家信息的典型方式:

foreach ($array['friendslist']['friends'] as $key => $value){

  $steamid = $value['steamid'];
  $relationship = $value['relationship'];
  $friend_since = $value['friend_since'];

        // do what need to be done here.

}