PHP с JSON-декодированием и steam api

Я новичок в 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? Также похоже, что имя сессии имеет значение, я прав? Я делал несколько тестов, и когда я изменил название сессии, это не сработало.

Итак, вот над чем я работаю
Код 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'];

И, конечно, echo $ steamfriend [‘friend’] не работает. Я вижу, что человек, который сделал эти PHP-файлы, уже знает, как называются сеансы (если они должны иметь право работать). Любые идеи, где я могу найти это?

Мне действительно стыдно, что я не могу понять это сам.

С уважением.

0

Решение

Первый JSON

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

переводит в этот массив PHP

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

Players представляет собой массив массивов (хэш-массивов), поэтому для доступа к первому игроку необходимо использовать индексный номер ($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

Другие решения

Когда 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

По вопросам рекламы [email protected]