2017-03-07 83 views
1

我是用蒸汽API乱搞,我发现,我是不是能够得到我的项目的数量计数的数量。可以说我有物品A 2次,它没有显示图片只有一次数量设置为“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) 
       '; 
      } 
+0

然后我建议你追加'$ backpack_items'到一个数组并且过滤掉重复的值并将它们合并成一个数组。但是,您可能复制粘贴的代码(特别是由于评论),不知道如何改变它。 – Xorifelse

+0

然后我建议你把你的问题修改成具体细节。有2个变量可以“链接”到你的问题。这可能是'$ id',具体而言'$ quantity'剩下的就是过时的信息。而不是**循环内的整个代码**,执行'$ tmp [] = $ backpack_items;的print_r($ TMP);'。删除过时的结果或通过pastebin或某种方式发布。 – Xorifelse

+0

根据输出,我没有看到任何重复的ID,所以它实际上是一个独特的项目。但是,如果它们相同,则可以将名称上的结果合并。 – Xorifelse

回答

0

由于没有ID,看看是否有任何重复,你可以通过名字来合并它们。

通过阅读代码时,它首先创建主阵列的副本。 我循环遍历主数组,然后再遍历副本。因此,对于主数组的每个值,数组的完整循环都会再次完成,以便与要比较的值进行比较。

由于预计至少有一个名字,我不会不确定,但只有在找到另一个结果之后,因此$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.