2014-04-26 24 views
0

我有Steam API的工作和功能,但是我想计算一个项目在数组中的次数,因此我可以打印出库存中有多少项。计算Steam API的JSON数组中的项目数

我将这个用于Team Fortress 2项目

这是我使用的URL。我拿出我的API密钥和蒸汽ID http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=APIKey&SteamID=Steam_ID&format=json

它的输出是:

{ 
"result": { 
    "status": 1, 
    "num_backpack_slots": 300, 
    "items": [ 
     { 
      "id": 1264649944, 
      "original_id": 1264649944, 
      "defindex": 267, 
      "level": 4, 
      "quality": 5, 
      "inventory": 2147483948, 
      "quantity": 1, 
      "origin": 1, 
      "flag_cannot_trade": true 
     }, 

但也有更多的项目则只是一个。

我想知道如何计算具有特定defindex的项目数并打印出来。

编辑:

<?php 
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json'); 
$myarray = json_decode($link, true); 

print $myarray['result']['items'][0]['id']; 
?> 
+0

我看到你的编辑,我会更新我的答案。 –

回答

1

使用PHP的count

<?php 
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json'); 
$myarray = json_decode($link, true); 

echo count($myarray['result']['items']); 
?> 

编辑: 要通过所有的人都指望具有特定属性的人,你必须循环,并增加一个变量:

<?php 
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json'); 
$myarray = json_decode($link, true); 

$count = 0; 
foreach($myarray['result']['items'] as $item){ 
    if($item['defindex'] == 267){//or whatever you're looking for 
     $count++; 
    } 
} 
echo $count; 
?> 
+0

检查我的编辑,应该做的伎俩。 –

+0

完美地工作。非常感谢 – Armageddon08

+0

如果我想搜索多个defindex并将其中的一个全部回显出来,该怎么办 – Armageddon08

0

您需要循环访问您的items数组。如果你正在寻找一个特定的defindex,你只需要计算你看到该特定值的次数。

$total = 0; 
foreach ($myarray->result->items as $item) 
{ 
    if ($item->defindex == 5000) // Scrap metal 
    { 
     $total++; 
    } 
} 

如果您正在寻找相符每种类型的物品,你会想要做的事,如:

$inv_array = array(); 
foreach ($myarray->result->items as $item) 
{ 
    if (array_key_exists($item->defindex,$inv_array)) 
    { 
     $inv_array[$item->defindex]++; 
    } 
    else 
    { 
     $inv_array[$item->defindex] = 1; 
    } 
} 

var_dump($inv_array); 

这将包含一个阵列,每一个独特的defindex

的计数您在上面的代码中犯的错误是您正在查看id。这对于TF2经济中的每个项目都是独一无二的,并随着每个新所有者的变化而变化,并且每个新工具都应用于该项目。

+0

我打印的ID只是一个例子 – Armageddon08