从数组生成PHP表时处理空白列

从数组生成PHP表时处理空白列,php,Php,我正在用下面的代码创建一个三列表单字段表。每行有三列。如果字段总数不是三的倍数,则最后一行在其余列中不包含空白表单字段 如何修改此项以完成剩余的带有空白表单字段的列 <?php $listCount = count($col); for ($i = 0; $i < $listCount; ++$i) {     if($i % 3 == 0) { echo '<tr class="list_row">';  } ?> &l

我正在用下面的代码创建一个三列表单字段表。每行有三列。如果字段总数不是三的倍数,则最后一行在其余列中不包含空白表单字段

如何修改此项以完成剩余的带有空白表单字段的列

<?php
$listCount = count($col);

for ($i = 0; $i < $listCount; ++$i) {    
    if($i % 3 == 0) {
        echo '<tr class="list_row">'; 
    } ?>

    <td><input type="text" style="width: 190px;" name="inputCol1[]" value="<?php echo $col[$i] ?>" /></td>
         
    <?php 
    if($i % 3 == 3) {
         echo '</tr>'; 
    }
}  
?>

只需更改

 if($i % 3 == 3) {
     echo '</tr>'; 
}
if($i%3==3){
回声';
}

如果($i%3==2){
回声“
”; }

它将起作用。

您需要完成
for
循环后的最后一行:

for ($i = 0; $i < $listCount; ++$i) {  
  ...
}
if ( ($i % 3) < 2 ) {
  do {
    echo "<td>...</td>";
    $i++;
  } while ($i % 3 != 2);
}
for($i=0;$i<$listCount;++$i){
...
}
如果($i%3)<2){
做{
回声“…”;
$i++;
}而($i%3!=2);
}
另外,请查看问题下方的注释,因为
$i%3
永远不会是
3


注意:我真的应该把
if
do
组合在一个很好的条件/循环中,但是现在已经太迟了,至少应该可以用了…

作为一个旁注,如果你只是用大量的PHP重复一两行HTML,
echo
it并对所有打开/关闭的PHP标记进行处理是有意义的。而且,$i%3永远不应该==3。乍一看,它对我来说几乎没问题,只要将
if($i%3==3)
更改为
if($i%3==2)
,因为你永远不会有等于3的模结果(只有0,1,2)。感谢所有的反馈。为清晰起见,编辑了问题,希望用空白字段结束最后一行的列。现在它只是以$i生成的最后一个字段结束。不,当元素总数不能被三整除时,您需要发出额外的空
元素。很抱歉,我误解了它的意思,我以为他只想在剩余字段中留空。Thx。这很有道理。刚刚尝试过,它又创建了一列,但第三列仍然是空的。如果($i%3==2),也会更改。试图找出我是否遗漏了什么?@jsuissa我犯了一个逻辑上的小错误。它现在应该可以工作了,尽管它可能可以被优化。非常感谢所有的努力——仍然只生成一个专栏。因此,我将最后一行更改为
},而($I%3)似乎就是这样。我会将if改为
$I%3>0
,因为当项目数可以被3整除时,您不想再添加一行。@David Harkness这也是出错的地方;问题是计数从0开始,当
$i%3==0
一行并添加第一列时。如果计数从1开始,您可能可以编写一个更简单的循环,并且只需使用
$i%3>0
for ($i = 0; $i < $listCount; ++$i) {  
  ...
}
if ( ($i % 3) < 2 ) {
  do {
    echo "<td>...</td>";
    $i++;
  } while ($i % 3 != 2);
}