从数组生成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);
}