2012-03-08 141 views
1

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

代码应该输出这个块,然后循环。因此,第一个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); 
} 
+0

一旦$ i == 5你可以执行一个休息;这将会从while循环中(内部第一个)'破坏'。另一个突破将打破含while循环。 – 2012-03-08 15:54:34

+0

你能告诉我一个例子吗? – TheWizard 2012-03-09 09:44:54

+0

这是我没有SQL登录的完整代码。 http://codepad.viper-7.com/3cdSZr – TheWizard 2012-03-09 09:52:57

回答

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; 
} 
0

如果我是阅读正确,你想有多个<ul>每个最多5 <li>

$i = 0; 
while(...) { 
    if (($i % 5) == 0) { 
     echo '<ul>'; 
    } 
    .... stuff ... 
    if ((($i + 1) % 5) == 0) { 
     echo '</ul>'; 
    } 
    $i++; 
} 

第一,如果()将打开您达到“5”上的$ I计数器多一个新的列表随时随地。所以对于i = 0,你会得到一个UL。然后,它只输出个别<li>元素并将$ i递增直至达到4.此时,您已输出5个元素,现在它将输出</ul>以关闭列表。

+0

不,如果我不清楚,不好意思。我想要很多李在每个李内有5个锚..所以基本上我想做一个LI并在每个插入5个链接并循环,直到.. – TheWizard 2012-03-08 16:09:11

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); 
} 
+0

这不起作用,应该有很多LI,每个LI有5个锚。这是一个LI一个链接,一个LI一个链接.. – TheWizard 2012-03-08 16:08:05

+0

对不起,忘了重置计数器。更改您的代码:-) – Gene 2012-03-08 16:11:38

+0

看起来好像还是坏了,附上一个链接http://tinyurl.com/7n39hvo – TheWizard 2012-03-08 16:15:40