Foreach in foreach替代

时间:2018-01-23 15:39:24

标签: php foreach

我被困在试图找出如何在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>&nbsp;"; 
        }
    }
}

此代码支持显示项目,当我删除“$ 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循环,这将有效。

2 个答案:

答案 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>&nbsp;";
}

您还可以考虑重新组织数据。使用带有rgDescriptionsrgInventory键的单个数组,而不是两个数组。

答案 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>&nbsp;";
}