无法弄清楚如何制作这个PHP数组表

时间:2015-09-18 14:12:22

标签: php html arrays multidimensional-array html-table

我似乎无法弄清楚如何打印一个漂亮的有序表。

我希望最多有7列,它可以生成所需的行数,具体取决于数组的大小。该数组是通过一个可以随时更新的URL。 (这是一个关于蒸汽的球员库存。)

$id = $steamprofile['steamid'];
$key = 'XXXXXXXXXXXXXXXXXXXX';
if($id != null){
  $inv = file_get_contents('http://steamcommunity.com/profiles/'.$id.'/inventory/json/730/2');
  $inventory = json_decode($inv, true);

  $price = file_get_contents('values/response.json');
  $value = json_decode($price, true);

  foreach ($inventory['rgDescriptions'] as $rgDescription) {                                
    for($i = 0; sizeof($rgDescription['market_name']) > $i; $i++){
      if(isset($rgDescription['market_name'])){
        print '<td><img src="https://steamcommunity-a.akamaihd.net/economy/image/'.$rgDescription['icon_url'].'" alt="'.$rgDescription['market_name'].' width="80" height="75"></td>';
      }
    }
  }
}

如果您需要查看数组,则数组位于here

我可以打印出表格,但它总是重复我不想要的项目。那么我该如何解决这个问题呢?任何建议都非常感谢。

2 个答案:

答案 0 :(得分:1)

您只需计算列数:

$max = 7;
$col = 1;
for(...) {
   if ($col == 1) {
      echo '<tr>'; // start new row if on column #1
   }
   echo '<td><img etc....'; // output a column
   if ($col == $max) {
     echo '</tr>'; // if column $max was just output, end the row
     $col = 0; // reset column count, 0 to account for ++ coming up next
   }
   $col++;
}

答案 1 :(得分:1)

"market_name"不是数组,而是一个元素。如果您count它(与sizeof相同),它将返回1,因为它只分配了一个值。说,您的行for($i = 0; sizeof($rgDescription['market_name']) > $i; $i++)for($i = 0; 1 > $i; $i++)相同,始终返回相同的结果。

foreach播放重复部分,然后你会得到一张带有相同线条的巨大桌子。

<强>建议:

foreach ($inventory['rgDescriptions'] as $rgDescription) {                                
    foreach ($rgDescription as $rg) {
        if(isset($rg['market_name'])) {
            print('
                <td>
                    <img src="https://steamcommunity-a.akamaihd.net/economy/image/'
                    .$rgDescription['icon_url'].
                    '" alt="'.$rgDescription['market_name'].
                    ' width="80" height="75"></td>');
        }
    }
}