1

私は dota 2 のファンで、試合の履歴と試合の詳細を取得できる Steam Web API を試しています。私のPHPコードを見てください。

$json = '{ "result": {
    "players": [
        {
            "account_id": 4294967295, 
            "player_slot": 0,
            "hero_id": 103,           
            "tower_damage": 1259,
            "hero_healing": 263,
            "level": 17,
            "ability_upgrades": [
                {
                    "ability": 5591,
                    "time": 130,
                    "level": 1
                },
                {
                    "ability": 5589,
                    "time": 333,
                    "level": 2
                },
                {
                    "ability": 5591,
                    "time": 454,
                    "level": 3
                }
            ]

        }
    ]}
}';
$obj = json_decode($json, false);

プレーヤー配列の下に、account_id、player_slot、hero_id などの値を出力したいと思います。オブジェクトとしてのjson配列に問題があります。また、このうち 3 つ、ability_upgrades 値の下にデータを出力したいと考えています。

4

3 に答える 3

1
    $data = json_decode($json, true);
    foreach($data['result']['players'] as $player) {
        // Your code
    }
于 2013-08-21T07:55:45.273 に答える
0

すべてのオブジェクトを配列に変換する場合は、この関数を使用します。

function objectToArray($d){ if(is_object($d)){ $d=get_object_vars($d); } if(is_array($d)){ return array_map(__FUNCTION__, $d); } else{ return $d; } }

Takes Your Example... 印刷する場合

$obj = json_decode($json, false);

、各ノードのオブジェクトを提供します。しかし、このようにした後

$obj = objectToArray(json_decode($json, false));

、この関数を使用して、すべてのノードを配列として取得しました。したがって、forループですべてのプレーヤーを出力するか、このようにaccount_idを出力できます...

echo $obj['result']['players'][0]['account_id'];
于 2013-08-21T07:53:32.590 に答える