我有Steam API工作和功能,但我想计算一个项目在数组中的次数,所以我可以打印我有多少项目库存。
我将其用于Team Fortress 2 Items
这是我使用的网址。我拿出了我的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&#39; 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;
?>
答案 1 :(得分: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经济中的每个项目都是唯一的,并且随每个新所有者而变化,并且每个新工具都应用于该项目。