使用 Steam 统计数量 Api
Counting the quantity by using the Steam Api
我在玩 steam API,我发现我无法获取我的物品数量。假设我有 2 次商品 A,它不会只显示 1 次数量设置为“2”的图片,而是显示两次数量设置为 1 的商品。
这是我用来获取库存的部分。
$backpackURL = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=" . $APIkey . "&SteamID=" . $profile . "&format=json";
$schemaURL = "http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?key=" . $APIkey . "&language=en";
$userBackpack = json_decode(file_get_contents($backpackURL), true);
$itemSchema = json_decode(file_get_contents($schemaURL), true);
$backpack_items = $userBackpack['result'];
$schema_items = $itemSchema['result'];
在这里我列出了所有项目:
foreach($backpack_items['items'] as $ind=>$backpack_items){
$id = $backpack_items['id'];
$defindex = $backpack_items['defindex'];
$name = getItemName($schema_items, $defindex, $image_url);
$quantity = $backpack_items['quantity'];
$inventory = $backpack_items['inventory'];
echo '
$tmp[] = $backpack_items; print_r($tmp)
';
}
由于没有ID看是否有重复的,可以尝试按名称合并
通过阅读这段代码,它首先创建了主数组的副本。
我遍历主数组,然后再次遍历副本。因此,对于主数组的每个值,都会再次完成数组的完整循环,以便与值进行比较。
由于预计至少有 1 个名称,我没有立即取消设置,而是在找到另一个结果后才取消设置,因此 $b
.
如果在主循环的键上发现了一个欺骗,它的数量就会增加。
$copy = $backpack_items['items'];
foreach($backpack_items['items'] as $k => $v){
$b = false;
$s = '';
$n = getItemName($schema_items, $v['defindex'], $s);
foreach($copy as $k2 => $v2){
if($n == getItemName($schema_items, $v2['defindex'], $s)){
if(!$b){
$b = $k;
} else {
unset($backpack_items['items'][$k2]);
$backpack_items['items'][$k]['quantity'] += 1;
}
}
}
}
// Now use your original loop, and the dupes should be removed.
我在玩 steam API,我发现我无法获取我的物品数量。假设我有 2 次商品 A,它不会只显示 1 次数量设置为“2”的图片,而是显示两次数量设置为 1 的商品。
这是我用来获取库存的部分。
$backpackURL = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=" . $APIkey . "&SteamID=" . $profile . "&format=json";
$schemaURL = "http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?key=" . $APIkey . "&language=en";
$userBackpack = json_decode(file_get_contents($backpackURL), true);
$itemSchema = json_decode(file_get_contents($schemaURL), true);
$backpack_items = $userBackpack['result'];
$schema_items = $itemSchema['result'];
在这里我列出了所有项目:
foreach($backpack_items['items'] as $ind=>$backpack_items){
$id = $backpack_items['id'];
$defindex = $backpack_items['defindex'];
$name = getItemName($schema_items, $defindex, $image_url);
$quantity = $backpack_items['quantity'];
$inventory = $backpack_items['inventory'];
echo '
$tmp[] = $backpack_items; print_r($tmp)
';
}
由于没有ID看是否有重复的,可以尝试按名称合并
通过阅读这段代码,它首先创建了主数组的副本。 我遍历主数组,然后再次遍历副本。因此,对于主数组的每个值,都会再次完成数组的完整循环,以便与值进行比较。
由于预计至少有 1 个名称,我没有立即取消设置,而是在找到另一个结果后才取消设置,因此 $b
.
如果在主循环的键上发现了一个欺骗,它的数量就会增加。
$copy = $backpack_items['items'];
foreach($backpack_items['items'] as $k => $v){
$b = false;
$s = '';
$n = getItemName($schema_items, $v['defindex'], $s);
foreach($copy as $k2 => $v2){
if($n == getItemName($schema_items, $v2['defindex'], $s)){
if(!$b){
$b = $k;
} else {
unset($backpack_items['items'][$k2]);
$backpack_items['items'][$k]['quantity'] += 1;
}
}
}
}
// Now use your original loop, and the dupes should be removed.