我被困在试图找出如何在foreach中获得foreach而不是数量$ item x quantity $ iteminfo。 看看。
$inventory = file_get_contents("https://steamcommunity.com/profiles/".$_SESSION['steamid']."/inventory/json/730/2");
$myarrayInv = json_decode($inventory, true);
if(isset($myarrayInv['rgDescriptions']))
{
if(isset($myarrayInv['rgInventory'])) {
foreach($myarrayInv['rgDescriptions'] as $item) {
foreach($myarrayInv['rgInventory'] as $iteminfo) {
echo "<div class='item'><img class='item' src='https://steamcommunity-a.akamaihd.net/economy/image/".$item['icon_url']."' height='90' width='120'/><span class='caption'>".$item['name']." | ".$iteminfo['id']."</span></div> ";
}
}
}
此代码支持显示项目,当我删除“$ iteminfo”的循环时,项目数量显示正确。像这样。
item1,item2,item3,item4。
当我添加forloop时,它会像这样。
item1,item1,item1,item1,item2,item2,item2,item2,item3,item3,item3,item3,item4 item4 item4 item4。
我不知道什么是好的解决方案,任何想法?
修改 也许我对自己想达到的目标不够清楚,请参阅。 $ item数组不包含itemid,但$ iteminfo确实包含itemid。
我希望itemid与itemname和picture一起显示,如果我在while循环中有一个while循环,这将有效。
答案 0 :(得分:3)
只需使用一个循环,然后在两个数组中使用相同的索引。
foreach ($myarrayInv['rgDescriptions'] as $index => $item) {
$iteminfo = $myarrayInv['rgInventory'][$index];
echo "<div class='item'><img class='item' src='https://steamcommunity-a.akamaihd.net/economy/image/".$item['icon_url']."' height='90' width='120'/><span class='caption'>".$item['name']." | ".$iteminfo['id']."</span></div> ";
}
您还可以考虑重新组织数据。使用带有rgDescriptions
和rgInventory
键的单个数组,而不是两个数组。
答案 1 :(得分:1)
每个rgDescription都由[classid_instanceid]从rgInventory键入,而不是直接索引。所以这对你来说可能更好(我使用我的个人蒸汽库存进行测试,似乎显示图标和名称):
$json = file_get_contents('https://steamcommunity.com/profiles/'. $_SESSION['steamid'] .'/inventory/json/730/2');
$data = json_decode($json, true);
foreach($data['rgInventory'] as $inv) {
$desc = $data['rgDescriptions'][ $inv['classid'] .'_'. $inv['instanceid'] ];
echo "<div class='item'><img class='item' src='https://steamcommunity-a.akamaihd.net/economy/image/". $desc['icon_url'] ."' height='90' width='120'/><span class='caption'>". $desc['name'] ." | ". $inv['id'] ."</span></div> ";
}