Я новичок в 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-файлы, уже знает, как называются сеансы (если они должны иметь право работать). Любые идеи, где я могу найти это?
Мне действительно стыдно, что я не могу понять это сам.
С уважением.
Первый 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);
Когда 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.
}