【问题标题】:the problem with the listing. nested loops?上市的问题。嵌套循环?
【发布时间】:2011-07-06 23:41:01
【问题描述】:

我这里是从我要绘制线数据的数据中每隔 6 次开一个新线。 当类似 6 的以下代码打印数据 36 次时。 这个函数是检查有多少游戏。如果我在下面提到,但现在有 36 个和 6 个印刷单元。每张打印 6 次。

for($i = 0; $i < $db->oyunSayisi(); $i++)
{ 
    if ($i % 6 == 0)
    {
        echo "<tr>";
    }

    ?>
    <br/>
    <?php
    foreach($db->oyunCek() as $oyun)
    {
        ?>
        <td width="224" height="115"><a href="<?=$db->siteAdres()?>/oyun.php?id=<?=$oyun['o_id']?>" title="<?=$oyun['o_baslik']?> oyna"><img height="115;110" src="<?=$db->siteAdres()?>/resimler/<?=$oyun['o_resim']?>" title="<?=$oyun['o_baslik']?> oyna" alt="<?=$oyun['o_baslik']?> oyna" /></a></td>
        <?php
    }
    if ($i % 6 == 0)
    {
        echo "</tr>";
    }
} 

【问题讨论】:

  • 如何将数据中每6个一行一个一个往下走?
  • 让我看看我是否可以重新表述这个问题:在从oyunSayisi() 函数返回的数据中,对于每第六行,您想用来自oyunCek() 的数据以 HTML 格式输出一个表格行功能?
  • 也许说。 oyunSayisi() 显示有多少场比赛。 ((现在 6 场比赛))

标签: php loops for-loop foreach


【解决方案1】:

我想我知道是什么导致了问题。

对于从oyunSayisi() 返回的每第六个项目,您需要创建一个表格行来显示来自oyunCek() 的数据。问题是第一个模数只输出&lt;tr&gt;,然后每一 行运行foreach 循环。最后,第二个模数输出&lt;/tr&gt;。我认为您想将所有内容组合成一个模数,如下所示:

for($i = 0; $i < $db->oyunSayisi(); $i++)
{ 
    if ($i % 6 == 0)
    {
        echo "<tr><br/>\n";
        foreach($db->oyunCek() as $oyun)
        {
            ?>
            <td width="224" height="115"><a href="<?=$db->siteAdres()?>/oyun.php?id=<?=$oyun['o_id']?>" title="<?=$oyun['o_baslik']?> oyna"><img height="115;110" src="<?=$db->siteAdres()?>/resimler/<?=$oyun['o_resim']?>" title="<?=$oyun['o_baslik']?> oyna" alt="<?=$oyun['o_baslik']?> oyna" /></a></td>
            <?php
        }
        echo "</tr>\n";
    }
} 

编辑:

经过进一步思考,您只想回显每第六行数据是没有意义的......所以我想到您可能正在尝试每第六行创建一个新的表格行,而不是跳过任何内部foreach 循环。这是修改后的代码:

echo "<tr>\n";
for($i = 0; $i < $db->oyunSayisi(); $i++)
{
    foreach($db->oyunCek() as $oyun)
    {
        ?>
        <td width="224" height="115"><a href="<?=$db->siteAdres()?>/oyun.php?id=<?=$oyun['o_id']?>" title="<?=$oyun['o_baslik']?> oyna"><img height="115;110" src="<?=$db->siteAdres()?>/resimler/<?=$oyun['o_resim']?>" title="<?=$oyun['o_baslik']?> oyna" alt="<?=$oyun['o_baslik']?> oyna" /></a></td>
        <?php
    }
    if (($i + 1) % 6 == 0)
    {
        echo "</tr>\n<tr>\n";
    }
} 

【讨论】:

  • 我明白 :) $i%6==0 和 $i!=0 :)
  • 在这种情况下,12 之一必须是
  • @Yusuf:我运行了一个示例项目,发现一个错误:&lt;/tr&gt;&lt;tr&gt; 不应该在第一项上输出,因为(0 % 6 == 0) 是真的。我们想要的是((0 + 1) % 6 == 0)
  • 我解决了这个问题。例如,当 8 场比赛显示在同一行时。但其中有2个必须通过底线。
猜你喜欢
  • 2021-05-17
  • 2016-06-23
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多