2011-04-10 79 views
0

我想用foreach-call调用4行的表。PHP foreach的多行?

我的问题是,在结果中我得到每个ID在同一列20次。

我使用这个代码:

<table width="80%" border="0" cellpadding="10px"> 

    <?php foreach (array_chunk($items, 4) as $row) { ?> 

     <?php  
     $i = 0;  
      foreach ($items as $item):  
      $class = null;  
      if ($i++ % 2 == 0) {    
      $class = ' class="altrow"';   
     } ?> 

    <tr 
     <?php echo $class;?> 
    > 

    <?php foreach ($row as $item){ ?>   
    <td> 
     <?php echo htmlentities ($item['Item']['id']); ?> 
    </td> 
    <?php } ?> 
<?php endforeach; ?>  
</tr> 
<?php } ?> 
</table> 

任何想法,我怎么能拿每个ID只有一次?

+0

正如顺便说一句,这是一个极大的方便,更易于维护使用jQuery做HTML行颜色条纹比用PHP做服务器端。 – mikel 2011-04-10 15:11:49

+0

mikel - 不一定是因为是的,jQuery确实有它的功能,但它暗示在浏览器中启用了JavaScript,并且希望让用户加载jQuery库来实现可以在服务器端实现的功能。 – judda 2011-04-10 15:14:11

+1

个人喜好,我猜。不过,jQuery的方式就是“$(”。stripeMe tr:even“)。addClass(”altrow“);” - 比我上面的PHP容易得多。尽管如此,这是无关紧要的,我不应该提到它真的... ... – mikel 2011-04-10 15:19:48

回答

2

您incrememnting $i在每一个$item而不是每一个$row

这是你正在寻找的解决?

编辑:(!一般我注意到,第一ECK)米克尔有你的修复,添加此修复行错误

<table width="80%" border="0" cellpadding="10px"> 
<?php 
    $i = 0; 
    $chunkedarray = array_chunk($items, 4); 
    foreach ($chunkedarray as $row) {  
     $class = null;  
     if ($i++ % 2 == 0)   
      $class = ' class="altrow"'; 
     echo "<tr ".$class.">"; 
     foreach ($row as $item){ 
      echo "<td>"; 
      echo htmlentities ($item['Item']['id']); 
      echo "</td>"; 
     } 
    echo "</tr>"; 
    }?> 
</table> 
+0

非常感谢您和@Mikel – grosseskino 2011-04-10 15:43:43