我正在使用steam api来循环我背包里的物品。这是我回来的一部分。
{
"result": {
"status": 1,
"num_backpack_slots": 900,
"items": [
{
"id": 1828738510,
"original_id": 1828738510,
"defindex": 166,
"level": 5,
"quality": 6,
"inventory": 2147484295,
"quantity": 1,
"origin": 0,
"flag_cannot_trade": true,
"attributes": [
{
"defindex": 143,
"value": 1373392596,
"float_value": 118276915200.000000
},
{
"defindex": 292,
"value": 1115684864,
"float_value": 64.000000
},
{
"defindex": 388,
"value": 1115684864,
"float_value": 64.000000
},
{
"defindex": 153,
"value": 1065353216,
"float_value": 1.000000
}
]
},
{
"id": 1828947755,
"original_id": 1178542060,
"defindex": 5009,
"level": 1,
"quality": 6,
"inventory": 2147484021,
"quantity": 1,
"origin": 4
},
{
"id": 1828947766,
"original_id": 1179066746,
"defindex": 5005,
"level": 1,
"quality": 6,
"inventory": 2147483798,
"quantity": 1,
"origin": 4
},
{
"id": 1828947780,
"original_id": 1181421843,
"defindex": 5009,
"level": 1,
"quality": 6,
"inventory": 2147484020,
"quantity": 1,
"origin": 4
},
等等。
我想要做的是使用foreach(或其他有效的东西)为我的defindex循环。这是我目前的代码:
<?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);
$total_metal = 0;
if ($schema-> result -> items[0] -> defindex == 5000)
{
$total_metal++;
}
if ($schema-> result -> items[0] -> defindex == 5001)
{
$total_metal+= 3;
}
if ($schema-> result -> items[0] -> defindex == 5002)
{
$total_metal+= 9;
}
print $total_metal;
?>
到目前为止,这返回0,因为第一个变量不是第一个变量中的任何一个。我需要做的是让这3个实例遍历整个数组。从我所看到的我需要为每个内部写一个,但环顾四周,我找不到任何可以帮助我的东西。提前谢谢。
答案 0 :(得分:0)
如果foreach没有工作那么
for($i = 0; $i < ($schema-> result-> items.length; i++){
if ($schema-> result -> items[i] -> defindex == 5000)
{
$total_metal++;
}
if ($schema-> result -> items[i] -> defindex == 5001)
{
$total_metal+= 3;
}
if ($schema-> result -> items[i] -> defindex == 5002)
{
$total_metal+= 9;
}
}
如果这不起作用(因为由于某种原因你无法访问长度),你也可以这样做:
$i = 0;
while($schema -> result -> items[i]){
//do stuff
$i++;
}
答案 1 :(得分:0)
您需要循环浏览$schema
中的每个项目。您可以使用foreach循环执行此操作。
foreach ($schema as $item)
在此循环中,您将针对您关注的三个值($item->defindex
,5000
,5001
)检查5002
值。
$metal_array = array(5000, 5001, 5002);
如果它与其中一个值匹配,那么您将执行相应的数学运算。
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;
}
}
整个if
块都在你的foreach循环中。在循环结束时,$total_metal
应该包含背包中的金属量。