Возникли проблемы с отображением частей массива, полученного из файла JSON

В настоящее время я возился с JSON. У меня есть переменные: $a и $b.

$a извлекает файл JSON с веб-сайта:

    $a = file_get_contents("http://backpack.tf/api/IGetUsers/v2/?steamids=76561198037411448&format=json");

$b декодирует это

    $b = json_decode($a, true);

Я сделал var_dump для $b, чтобы убедиться, что это действительно массив.

Я попытался повторить $b["name"], но ничего не было возвращено.

Я понятия не имею, что случилось; ничего не возвращается.


person plv    schedule 28.05.2013    source источник
comment
Возможно, вам поможет gettype(): php.net/manual/de/function.gettype. php   -  person Chris    schedule 29.05.2013
comment
Попробуйте использовать var_dump($b), чтобы получить представление о содержимом переменной.   -  person Scuzzy    schedule 29.05.2013


Ответы (3)


У вас есть многомерный набор данных вместо $b["name"]. Что вам нужно:

$b["response"]["players"][0]["name"]

Это структура объектов json из этого URL.

{
    "response": {
        "success": 1,
        "current_time": 1369778504,
        "players": {
            "0": {
                "steamid": "76561198037411448",
                "success": 1,
                "backpack_value": 185.86,
                "backpack_update": 1369543543,
                "name": "Paranoid Android",
                "stats_tf_reputation": 1,
                "notifications": 0
            }
        }
    }
}

Если вам нужна итерация, придется пройти через $b["response"]["players"]

person Scuzzy    schedule 28.05.2013

Может быть, вы хотите что-то вроде этого? Я только предполагаю, что может быть более 1 игрока.

for($i = 0;$i<count($b["response"]["players"]);$i++)
{
   echo $b["response"]["players"][$i]["name"]
}
person Sandeep Bansal    schedule 28.05.2013

Ну, это JSON, который возвращается:

{
    "response": {
        "success": 1,
        "current_time": 1369778435,
        "players": {
            "0": {
                "steamid": "76561198037411448",
                "success": 1,
                "backpack_value": 185.86,
                "backpack_update": 1369543543,
                "name": "Paranoid Android",
                "stats_tf_reputation": 1,
                "notifications": 0
            }
        }
    }
}

Если $b = json_decode($a), то просто использовать $b['name'] не получится. Этот ключ не установлен.

Вам придется следить за вложением литералов объектов. Что-то вроде этого должно работать:

echo $b['response']['players']['0']['name'];
person Sverri M. Olsen    schedule 28.05.2013