2017-03-07 5 views
1

スチームAPIを使いこなしていましたが、私はアイテムの数量を得ることができませんでした。私はアイテムAを2回、「2」に設定した数量で写真を1回だけ表示するのではなく、その数量を1に設定して2回アイテムを表示します。スチームAPIを使用して数量を数える

これはIですインベントリを取得するために使用します。

$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'を配列に追加し、重複した値をフィルタリングして1つの配列にマージすることをお勧めします。しかし、おそらく(おそらくコメントのために)コードを貼り付けてコピーし、それを変更する方法を知らないでしょう。 – Xorifelse

+0

次に、あなたの質問を詳細に絞り込むことをお勧めします。あなたの質問にリンクする2つの変数があります。これはおそらく '$ id'であり、残りの部分は時代遅れの情報です。ループ全体のコード**の代わりに、 '$ tmp [] = $ backpack_items;を実行してください。 print_r($ tmp); '。廃止された結果を削除するか、ペーストビンまたは何らかの仕掛けで投稿してください。 – Xorifelse

+0

出力によれば、重複するIDは表示されませんので、一意の項目が実際に存在します。ただし、名前が同じであれば結果をマージできます。 – Xorifelse

答えて

0

任意の重複がある場合は、あなたが名前によってそれらをマージしようとすることができます参照するには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. 
関連する問題