2016-09-10 10 views
0

私はJSONファイルを持っています。 (Steam API)。私は自分のウェブサイトにプレーヤーの在庫を表示したい。私はこのURLを使用します:https://steamcommunity.com/id/majidsajadi/inventory/json/730/2ネストされたforeachの値にアクセスするPHP

次に私はjson_decode機能でそれをデコードします。

今、rgInventoryとrgDescriptionという2つの配列があります。 rgInventoryのclass idとrgDescriptionのclassidが一致しているかどうかを調べる必要があります。これは、igDescriptionでいくつかの値を使用しています。

私は、2つのforeachループとif条件を使用して、クラスIDが一致するかどうかを確認する必要があると思います。私は必要な情報をエコーし​​ます。

質問はどのようにネストされたforeachを使用する必要がありますか?

あなたはこのような2つの入れ子 foreachループを使用することができます

答えて

0

$decoded_data = json_decode($your_json_data, true);

foreach($decoded_data['rgInventory'] as $arr1){ 
    foreach($decoded_data['rgDescriptions'] as $arr2){ 
     if($arr1['classid'] == $arr2['classid']){ 

      // both the classid matches 
      // your code 

     } 
    } 
} 
+0

問題は、私はこのクラスにアクセスできます。 $ decoded_data [rgInventroy] [*ランダム数字キー*] [classid]。 rgdescriptionについても同様です。 –

+0

@MajidSajadiはい、私はあなたの質問からそれを理解し、* rgInvenoryの* classidとrgDescriptionsのclassidを比較したいのですか?この場合、上記のコードはうまくいくはずですね。上記のコードスニペットでアプリケーションをテストしましたか? –

+0

classidは、rgInventroy配列の要素である配列の要素です。 rgInventroyは、要素として配列の多い配列です。だからそれはそうです:[rgInventroy] [2637848264] [classid] –

0

このコードを試してみてください:

このように、 $decoded_dataは、最終的な結果に json_decode()機能を適用した後、あなたの復号化されたデータであると仮定すると

$steamData = json_decode(file_get_contents("https://steamcommunity.com/id/majidsajadi/inventory/json/730/2"), true); 

if($steamData["success"] != 1){ 
    exit(); 
} 

$match = array(); 

foreach($steamData["rgInventory"] as $v1){ 
    $match[$v1["classid"]]["match"] = false; 
    $match[$v1["classid"]]["count"] = 0; 
} 

foreach($steamData["rgDescriptions"] as $v2){ 
    if(array_key_exists($v2["classid"],$match)){ 
     $match[$v2["classid"]]["match"] = true; 
     $match[$v2["classid"]]["count"]++; 
    } 
} 

print_r($match); 
関連する問題