2015-05-14 78 views
0

我在这个阶段是新手,对于openID库也是如此。我想为Steam用户创建一个网站,因此我需要显示他们的广告资源。我已经下载了大部分东西写的例子,但我仍然需要其他的东西。作为一项培训,我采取了一些与库存不同的方式,但是相似。没有成功,所以我希望你能帮助我。带JSON解码和蒸汽API的PHP

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

{ 
"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']; 

而上述的这一个运作良好。你能解释一下为什么“蒸汽”和“球员”之间有0?此外,它看起来像会话名称很重要,我说得对吗?我正在做一些测试,当我更改名称会话时,它不起作用。

因此,这里就是我的 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和我不知道如何得到它。我一直试图让关系,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文件的人已经知道会话名称是什么(如果他们需要正确工作)。任何想法,我可以在哪里找到它?

我感到非常惭愧,我无法自己想象它。

问候。

回答

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 S,你只需要运行一个简单的foreach:

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

这是相同的像“内容”的东西。没有什么更多了。我无法想象如何从朋友名单中得到蒸汽。第一个是一些程序员做的例子,我不能做同样的事情,但有其他变量。这就是所有 泰勒博士 - 让蒸汽朋友之一,就像我蒸汽的“球员”是一个,所以只有一个蒸汽。现在有几个(因为有很多朋友)。 – user3898922

+0

@ user3898922如果我说得对,你想让所有玩家都对阵列做出回应吗? –

+0

是的,你是对的。 – user3898922

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. 

} 
+0

你能解释一下关于会话的事吗?当我将其从$ session_steamid更改为$ sessios_steam并像使用它(关于echo和其他东西)那样使用它时,它不起作用。所以会话名称很重要,对吗? – user3898922

+0

我一直这样做很长一段时间,从来没有一个很好的理由使用SESSION变量。更好的办法是问怎么做你想要做的事情与会话 – Misunderstood

+0

你需要做一个'session_start()'首先保存变量。 – Misunderstood