2013-09-23 46 views
0

我搜索了周圍的答案,但找不到任何東西,正在尋找你的幫助,美妙的人。我一直在用我的網站蒸汽web API玩弄。我找到了這個代碼並正在使用它。另外,我有蒸汽API幾乎沒有任何經驗,我的大部分經驗是C.無論如何,這裏是代碼:Steam Web API Condensing

[insert_php] 
$api = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=MyApiKey&steamid=MySteamId&format=json"; 
$json = (file_get_contents($api)); 
$schema = json_decode($json); 
print var_dump($schema); 
[/insert_php] 

我使用的插件,將這個PHP到我的WordPress頁面。此代碼進入我的蒸汽揹包,並給我所有我在一個複雜的列表中的項目。我需要幫助的是凝聚它,以便它可以很容易地閱讀。清單項目的定義特徵是defindexes。我想要做的就是擁有它,所以如果它找到一定數量的具有相同defindex的項目,它會將這樣的數量返回到我的頁面中:廢金屬=找到廢金屬定義索引的數量。我希望這是清楚的,並且有答案。謝謝。我的代碼

部分,現在返回:

{ 
       "id": 1828947688, 
       "original_id": 1176490973, 
       "defindex": 5009, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483650, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947700, 
       "original_id": 1176491289, 
       "defindex": 5009, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483651, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947742, 
       "original_id": 1178541917, 
       "defindex": 5009, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483652, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947755, 
       "original_id": 1178542060, 
       "defindex": 5009, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483757, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947766, 
       "original_id": 1179066746, 
       "defindex": 5005, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483653, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947780, 
       "original_id": 1181421843, 
       "defindex": 5009, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483756, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947788, 
       "original_id": 1181426745, 
       "defindex": 5006, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483654, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947793, 
       "original_id": 1187413384, 
       "defindex": 5007, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483755, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947796, 
       "original_id": 1187413535, 
       "defindex": 5007, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483655, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947801, 
       "original_id": 1187416362, 
       "defindex": 5007, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483754, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947810, 
       "original_id": 1190342559, 
       "defindex": 5013, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483656, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947826, 
       "original_id": 1190342965, 
       "defindex": 5013, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483753, 
       "quantity": 1, 
       "origin": 4 
      }, 
      { 
       "id": 1828947835, 
       "original_id": 1243518373, 
       "defindex": 5011, 
       "level": 1, 
       "quality": 6, 
       "inventory": 2147483657, 
       "quantity": 1, 
       "origin": 4 
      } 
ETC. 

回答

0

您需要遍歷每個項目在結果$schema和搜索你正在尋找的defindexes。

例如,如果要計算所有金屬,則需要查找5000,50015002

$metal_array = array(5000, 5001, 5002); 
foreach ($schema as $item) 
{ 
    if (in_array($metal_array, $item->defindex) 
    { 
     // Do something for the $item. Presumably, you'll add these up 
     // So that you can get a total metal count (remember that refined is worth 9 scrap 
     // and reclaimed is worth 3) 
    } 
} 

編輯

回答一些在您的評論的問題:

指的是在您的模式目前$item對象的defindex。您在此foreach循環中執行object iteration。在foreach循環中正在迭代每個item。因此,在第一次通過循環,$item看起來就像這樣:

 { 
      "id": 1828947688, 
      "original_id": 1176490973, 
      "defindex": 5009, 
      "level": 1, 
      "quality": 6, 
      "inventory": 2147483650, 
      "quantity": 1, 
      "origin": 4 
     } 

您可以通過執行$item->ATTRIBUTENAME(即$item->quality$item->origin)訪問的任何值。在這個循環中,它將檢查是否在$metal_array中,其等於5009,其包含5000,5001, and 5002。它不,所以if塊不執行。

至於你在循環做什麼,我可能會修改代碼稍微做這樣的事情:

$metal_array = array(5000, 5001, 5002); 
$total_metal = 0; 
foreach ($schema as $item) 
{ 
    if (in_array($metal_array, $item->defindex) 
    { 
     switch ($item->defindex) 
     { 
      case 5000: 
       $total_metal++;  // or $total_metal += 1; 
       break; 
      case 5001: 
       $total_metal += 3; 
       break; 
      case 5002: 
       $total_metal += 9; 
       break; 
     } 
    } 
} 

在這個框的最後,你將不得不在$total_metal值等於所有金屬的廢料價值。

該塊使用switch語句來確定特定項目的價值。每個case中的break語句可防止邏輯從「落入」到下一個選項。

例如,如果break沒有添加到代碼case 5000塊的端部和等於5000,這將增加1然後3。這不是你想要的答案。但是,在某些情況下,這是一個有效的選擇。

 switch ($item->defindex) 
     { 
      case 5000: 
       $total_metal++;  // or $total_metal += 1; 
      case 5001: 
       $total_metal += 3; 
       break; 
     } 

最後,如果你是新的PHP,我建議採取看看文檔:http://php.net/manual/en/index.php

+0

感謝。我討厭這樣做,因爲我寧願自己查看它,但我試圖查找它,但我仍然感到困惑。我會把什麼放在括號內?從我看到的if語句在數組中看到5000,5001和5002.我不知道$ item-> defindex的意思,因爲我不知道如何以這種格式編碼,不知道在哪裏學習。再次,我討厭這樣做,我明白如果你不回答,因爲這是本地化的,或者你不喜歡勺子餵養我的答案,但它將不勝感激,如果你能幫助。 – Tyler