2015-09-26 165 views
3

我想在循环中的每第四个数字项之后打破循环。如何添加<tr></tr>在每第四个循环项之后​​</td>

我想创建一个20人的列表;在每tr应该是4人。

所以,我想从循环中每隔4 th循环数中断。我的一个tr将包含4 td和每个td值相对于第一个td循环将增加1秒将2和最后将4,然后它应该与新tr中断和值在td像我说的在增量订单。

我的代码如下:

<?php for ($i = 0 ; $i<=20; $i++){?> 
    <tr> 

     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link">Full name 1</a> 
      <span class="user-subhead">Member</span> 
     </td> 
      <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 2 ?>" class="user-link">Full name 1</a> 
      <span class="user-subhead">Member</span> 
     </td> 

     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 3 ?>" class="user-link">Full name 1</a> 
      <span class="user-subhead">Member</span> 
     </td> 

     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 4 ?>" class="user-link">Full name 1</a> 
      <span class="user-subhead">Member</span> 
     </td> 

     </tr> 

<?php 
if($i%4==0){ echo "<tr></tr>";} 


} ?> 
+3

你的$ i从0开始的,所以,$ I%3 shuold工作.. –

+0

@NiranjanNRaju真的不应该,这将使每3,正确的使用方法是($ I + 1)% 4 – DrunkWolf

+0

正确使用将决定从0或1到19或20 – M0rtiis

回答

1

只想坚持我的脖子出来,并显示替代方案。 通常你有一个用户数组。 这将创建一个带有4列的表格,如果您有22个用户,则只有20个用户会在此示例中显示,因为它会限制输出以填充每行。

$td = array(); 
$userlist = array('Bob', 'John', 'Robert', 'Eric', 'Lydia', 'Fanny', 'Alex', 'Leopold', 'Tom', 'Mark', 'Bob2', 'John2', 'Robert2', 'Eric2', 'Lydia2', 'Fanny2', 'Alex2', 'Leopold2', 'Tom2', 'Mark2'); 

foreach($userlist as $i => $user) { 

    if ($i != 0 && $i%4 == 0) { 
     $td[] = '<td> ' . implode('</td><td>', $tdata) . '</td>'; 
     $tdata = array(); 
    } 

    $tdata[] = '<img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
       <a href="' . $i . '" class="user-link">Full name ' . $user . '</a> 
       <span class="user-subhead">Member</span>'; 

} 

echo '<table><tr>' . implode('</tr><tr>', $td) . '</tr></table>'; 
-1
<?php for ($i = 5 ; $i<=20; $i+=4){ ?> 
       <tr> 

        <td> 
         <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
         <a href="<?php echo $i - 4 ; // shoud to be 1 ?>" class="user-link">Full name 1</a> 
         <span class="user-subhead">Member</span> 
        </td> 
        <td> 
         <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
         <a href="<?php echo $i - 3; // shoud to be 2 ?>" class="user-link">Full name 1</a> 
         <span class="user-subhead">Member</span> 
        </td> 

        <td> 
         <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
         <a href="<?php echo $i - 2; // shoud to be 3 ?>" class="user-link">Full name 1</a> 
         <span class="user-subhead">Member</span> 
        </td> 

        <td> 
         <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
         <a href="<?php echo $i - 1; // shoud to be 4 ?>" class="user-link">Full name 1</a> 
         <span class="user-subhead">Member</span> 
        </td> 

       </tr> 

<?php } ?> 
+0

你的循环不应该从4开始? –

+0

你是对的。 thx – M0rtiis

-1

变化if($i%4==0){ echo "<tr></tr>";}if(($i+1)%4==0){ echo "</tr><tr>";}

+0

...正确我用你的支票在我的答案..你可以检查 –

-1
assume $rows = 20; 

<?php for ($i = 0 ; $i<=$rows; $i++){?> 
    <tr> 
     <?php if ($i<$rows){ 

     ?> 
     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link"><?php echo $rows[$i]['nickname']?></a> 
      <span class="user-subhead">Member</span> 
     </td> 
     <?php } ?> 
      <?php $i = $i+1; 

      if ($i<$rows){ ?> 
     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link"><?php echo $rows[$i]['nickname']?></a> 
      <span class="user-subhead">Member</span> 
     </td> 
     <?php } ?> 
      <?php 
      $i = $i+1; 

      if ($i<$rows){ ?> 
     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link"><?php echo $rows[$i]['nickname']?></a> 
      <span class="user-subhead">Member</span> 
     </td> 
     <?php } ?> 
      <?php 
      $i = $i+1; 
      if ($i<$rows){ ?> 
     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link"><?php echo $rows[$i]['nickname']?></a> 
      <span class="user-subhead">Member</span> 
     </td> 
     <?php } ?> 

    </tr> 

<?php 
if(($i+1)%4==0){ echo "</tr><tr>";} 

} ?>  
+0

这是一个懒惰的答案,至少格式化的代码,更好地解释为什么答案的作品,所以OP学到了东西,SO应该主要是关于教民,不提供复制粘贴代码 –

+0

@ToniLeigh可以再次审查我的答案....它不是复制粘贴.....如果你能给出更好的答案,那么这...那么你应该评论和降级在这里..... –

+0

它的复制粘贴,因为它只是一个代码块,在某个地方,也就是说,有人可能会复制粘贴而不是通过挑选它来找到他们很难注意到的解决方案 –

0

您可以加入虚拟变量$温度,然后每次递增值,如果你提出它将再次从1开始。

这是最简单的方法!

<?php 
    $temp =1; 
    for ($i = 1 ; $i<=23; $i++){ if($temp == 1){ echo "<tr>"; } ?> 
     <td> 
      <img src="http://bootdey.com/img/Content/user_1.jpg" alt=""> 
      <a href="<?php echo $i ; // shoud to be 1 ?>" class="user-link">Full name <?php echo $i ; ?></a> 
      <span class="user-subhead">Member</span> 
     </td> 
    <?php 
    if($temp == 4){ echo "</tr>"; $temp = 0; } 
     $temp++; 
    } 
    if($temp-1 != 0){ echo '</tr>'; } 
    ?> 
+0

只是尝试这个答案,没有解释结果复制粘贴代码没有进一步的理解任何人 –

+0

@ toni抱歉,我发布了一个基本的PHP,所以我认为不需要解释,好的,现在我会加我的解释 – Sathish

+0

对于有经验的人来说基本的东西可能会让有些人学习时感到困惑,所以我至少应该强调这种改变 –

相关问题