2009-11-24 150 views
10

我想在我的foreach中显示数据,每行两列。我想我的结果看起来像下面这样:如何在php循环中显示每行两个表列

<table> 
<tr><td>VALUE1</td><td>VALUE2</td></tr> 
<tr><td>VALUE3</td><td>VALUE4</td></tr> 
<tr><td>VALUE5</td><td>VALUE6</td></tr> 
</table> 

任何帮助将不胜感激。

回答

10
$i=0; 
foreach ($x as $key=>$value) 
    { 
    if (fmod($i,2)) echo '<tr>'; 
    echo '<td>',$value,'</td>'; 
    if (fmod($i,2)) echo '</tr>'; 
    $i++; 
    } 

这将输出TR(行)每个第二时间

PS:我没有测试的代码,所以也许你需要添加!如果它在第一次迭代时不输出TR,但在开始的第二次迭代时输入TR ...

+0

谢谢你,这个伟大的工程。是的,我必须为第一个添加!fmod。 – brad 2009-11-24 23:53:06

+4

不起作用... – 2012-05-18 17:54:13

+3

@ FredStevens-Smith:不要说'不行',为什么不详细说明一下。为什么它不起作用?你收到错误了吗?它怎么能被改进? – TheCarver 2013-09-21 14:19:23

37

可以使用array_chunk()将数据数组分割成更小的数组,在这种情况下长度为2,为每一行。

<table> 
<?php foreach (array_chunk($values, 2) as $row) { ?> 
    <tr> 
    <?php foreach ($row as $value) { ?> 
     <td><?php echo htmlentities($value); ?></td> 
    <?php } ?> 
    </tr> 
<?php } ?> 
</table> 

请注意,如果你有一个奇数值,这会留下最后一行与只剩一个格。如果你想添加一个空单元格,如果有必要,你可以检查外部foreach内的$row的长度。

+0

这将在另一个脚本中起作用。谢谢。 – brad 2009-11-24 23:54:13

+0

这个工作非常感谢... – 2012-07-24 09:43:52

+1

不会与迭代器一起工作 – Oleg 2014-02-12 12:10:20

2

这将给你带来很大的表和循环concept--

<table border="1" cellspacing="0" cellpadding="2"> 

<?php 

    for($x=1; $x<=20; $x++) 
     { 
     echo "<tr>"; 
     for($y=1; $y<=20; $y++) 
      { 
      echo "<td>"; 
      echo $x*$y; 
      echo "</td>"; 
      } 
     echo "</tr>"; 
     } 
?> 
</table> 
+0

我不认为这正是OP想要的......阅读问题。 – BenjiWiebe 2013-01-05 18:08:07

-1
<table> 
<?php 
    $i=0; 
    foreach ($x as $key=>$value) 
    { 
     if (!$i%2) echo '<tr>'; 
     echo '<td>',$value,'</td>'; 
     if ($i%2) echo '</tr>'; 
     $i++; 
    } 
?> 
</table> 
+0

它应该= if($ i%2 == 0)echo''; – 2016-04-29 08:00:26