2016-05-11 125 views
0

我目前正在使用Steam API,但並非所有事情都是按照應有的方式進行的。JSON獲取價值

的JSON文件(第一部分)如下:

{ 
"playerstats": { 
    "steamID": "XXXXXXXXXXXX", 
    "gameName": "ValveTestApp260", 
    "stats": [ 
     { 
      "name": "total_kills", 
      "value": 4910 
     }, 
     { 
      "name": "total_deaths", 
      "value": 3691 
     }, 
     { 
      "name": "total_time_played", 
      "value": 280969 
     }, 

我想通過名稱來訪問總殺敵的價值;這是因爲每個玩家的統計順序是不同的,這意味着我不能使用[0]或[1]。

我已經有解碼部分:

$csgo = json_decode(file_get_contents($apiurl_csgo), true); 

但現在我需要通過檢查訪問總殺敵值,如果「啄」的名字(不知道它叫什麼)等於「total_kills 」。

以前我用過$ cs_kills = $ csgo [「playerstats」] [「stats」] [0] [「value」]; 但我發現這並不總是工作,因爲統計的順序可能不同。

我希望你們能理解我的問題,能幫助我!

在此先感謝並對不起我的英語,我來自荷蘭。

拉爾斯

+1

這是什麼語言? PHP?你需要用你正在使用的編程語言來標記你的問題。 – jwodder

+0

@jwodder對不起,我是這個網站的新手,我會在下次做! – Furyxis

回答

0

你必須得到你想要的數據:

$total_kills = 0; 
foreach($csgo["playerstats"]["stats"] as $stat) { 
    if($stat['name'] == 'total_kills') { 
    $total_kills = $stat['value']; 
    break; 
    } 
} 

陣列減少(樂趣)

$total_kills = array_reduce($csgo['playerstats']['stats'],function($carry,$stat) { 
    return $carry ? $carry : ($stat['name'] == 'total_kills' ? $stat['value'] : $carry); 
},0); 
0

你可以使用的foreach:

<? 
$json_string='{"playerstats":{"steamID": "XXXXXXXXXXXX","gameName":"ValveTestApp260","stats":[{"name":"total_kills","value":4910},{"name":"total_deaths","value": 3691},{"name": "total_time_played", "value": 280969}]}}'; 
$obj=json_decode($json_string); 
foreach ($obj->playerstats->stats as &$value) { 
    if($value->name == 'total_kills'){ 
     echo $value->value; 
     // Do somethig with value 
    } 
} 
?>