我有一个带有6个对象的json feed,它们都有对象。我有一个ID,我正在尝试搜索并计入另一个对象。
if (isset($_GET['steamusr'])) {
$user = $_GET['steamusr'];
$myinv = 'http://steamcommunity.com/id/'.$user.'/inventory/json/295110/1/';
$content2 = file_get_contents($myinv);
$json2 = json_decode($content2, true);
$imgurlbase = 'http://steamcommunity-a.akamaihd.net/economy/image/';
foreach($json2['rgDescriptions'] as $i){
$item = $i['market_name'];
$icon = $i['icon_url'];
$fetchdata = 'http://steamcommunity.com/market/priceoverview/?appid=295110¤cy=1&market_hash_name=' . urlencode($item);
$grab = file_get_contents($fetchdata);
$id = json_decode($grab, true);
$itemid = $i['classid'];
foreach($json2->rgInventory as $i2){
if($i2->$itemid == $itemid){
$ci = 0;
$count = $ci++ ;
}
}
所有数据首先来自rgDescriptions,然后rgInventory具有要在其中计数的对象数。商品ID来自$ itemid,然后我需要搜索rgInventory,然后从设定值$ itemid计算匹配ID的数量。
我最大的问题是rgInventory有唯一的对象,所以我试图对匹配的classid进行递归/通配符搜索。
json结构可以在这里找到:http://www.jsoneditoronline.org/?url=http://steamcommunity.com/id/fuigus/inventory/json/295110/1/
答案 0 :(得分:1)
我认为你的代码本质上是正确的,但你并不是在比较正确的东西。
$json = json_decode($content2);
foreach ($json["rgDescriptions"] as $item) {
$num = 0;
foreach ($json["rgInventory"] as $inventory_entry) {
if ($inventory_entry["classid"] === $item["classid"]) {
$num += 1;
}
}
// do something with $num
var_dump($item["classid"] . ": " . $num);
}
该行:
if($i2->$itemid == $itemid){
不好,$i2->$itemid
解析为$i2->1107865473
并不存在。我认为你打算$i2->classid
。
这样的错误发生是因为您使用了无意义的抽象变量名称。 $i
,$i2
和$content2
,这些都毫无意义。您还混合了itemid
和classid
这两个词,很容易让人感到困惑。
此外,您还要混合括号表示法和对象表示法。选择一个并坚持下去。