2017-03-07 89 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.