PHP循环在x之后的循环中

时间:2012-03-08 15:51:15

标签: php loops for-loop foreach

在SO上搜索以快速解决此问题。我试图在5个项目之后创建一个循环中断。 PHP不是我最强的主题,开发人员没有留下任何评论。

代码应输出此块,然后循环。因此,第一个LI有一个循环,然后是其中5个项目的块循环。我无法理解。

<li class="royalSlide">
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
</li>

到目前为止我编辑的代码,我添加了整数。

$i=5;
while($row = mysql_fetch_array($result))
{       
    $pid=$row["stock_products_code"];
    $dir = "assets/sale/".$pid."/";$dh = opendir($dir);
    echo '<li class="royalSlide">'; 
    while (($file = readdir($dh)) !== false)
        {       
        $vpxd=$file;
            if($vpxd=="." || $vpxd=="..")
            {

            }else{
                $vpxd=str_replace(".jpg","", $vpxd);
                echo '<a href="/product-sale.php?prodref='.$vpxd.'" target="_top"><img src="/assets/sale/'.$pid.'/'.$file.'" border="0"  /></a>';
                $i++;
            }       
        }
    echo '</li>';   
closedir($dh);
}

3 个答案:

答案 0 :(得分:1)

您在搜索break statement吗?

while($row = mysql_fetch_array($result))
{    
  $i = 0;

  $pid = $row["stock_products_code"];
  $dir = "assets/sale/$pid/";
  $dh = opendir($dir);

  echo '<li class="royalSlide">'; 

  while (($file = readdir($dh)) !== false)
  {       
    $vpxd = $file;

    if($vpxd != "." && $vpxd != ".." )
    {
      $vpxd=str_replace(".jpg","", $vpxd);
      echo '<a href="/product-sale.php?prodref=$vpxd" target="_top"><img src="/assets/sale/$pid/$file" border="0" /></a>';
      $i++;
    }

    if ($i == 5) 
    {
      break; // leave the inner while loop
    }

  }

  echo '</li>';   

  closedir($dh);
}

答案 1 :(得分:0)

摆脱这个:

$i = 5;

在每个内循环之前将$i设置为零:

while($row = mysql_fetch_array($result))
{  
    $i = 0;

如果$i命中5:

,则中止内循环
echo '<a href="/product-sale.php?prodref='.$vpxd. ...
if (++$i == 5) {
    break;
}

答案 2 :(得分:0)

如果我正确阅读,你想要多个<ul>,每个<li>最多只有$i = 0; while(...) { if (($i % 5) == 0) { echo '<ul>'; } .... stuff ... if ((($i + 1) % 5) == 0) { echo '</ul>'; } $i++; } 个?

<li>

第一个if()将在$ i计数器上达到'5'的倍数时打开一个新列表。因此,对于i = 0,您将获得UL。然后它只输出单个</ul>元素并递增$ i直到它达到4.此时你输出5个li元素,它现在输出{{1}}来关闭列表。