Php Smarty,每4次迭代一行
我如何在Smarty中设置循环中每4次迭代,我就会在表中得到新行? 我正在尝试这样的事情:Php Smarty,每4次迭代一行,php,foreach,html-table,smarty,counter,Php,Foreach,Html Table,Smarty,Counter,我如何在Smarty中设置循环中每4次迭代,我就会在表中得到新行? 我正在尝试这样的事情: <table> {foreach $arr as $v} {counter start=0} {if $counter/4 == 0} <tr><td>{$v}</td></tr> {else} <td>{$v}</td>
<table>
{foreach $arr as $v}
{counter start=0}
{if $counter/4 == 0}
<tr><td>{$v}</td></tr>
{else}
<td>{$v}</td>
{/if}
<td>
{/foreach}
</table>
{foreach$arr作为$v}
{计数器开始=0}
{如果$counter/4==0}
{$v}
{else}
{$v}
{/if}
{/foreach}
但我明白这是愚蠢的,我被卡住了,有正常的方法吗?如果没有数据,你可以在空行中生活,那么使用以下方法:
{assign var="counter" value="0"}
<table>
<tr>
{foreach $arr as $v}
{assign var="counter" value=$counter + 1}
{if $counter % 4 == 0}
</tr><tr>
{/if}
<td>{$v}</td>
{/foreach}
</tr>
</table>
{assign var=“counter”value=“0”}
{foreach$arr作为$v}
{assign var=“counter”value=$counter+1}
{如果$counter%4==0}
{/if}
{$v}
{/foreach}
如果您不能接受这种情况,则需要在呈现表之前检查是否有可用的数据
仍然需要说明的是,
$arr
的计数必须是4
的倍数。否则,需要正确设置columnspan
属性。这将是Smarty 3解决方案,适用于任意数量的列,无空行,并在必要时添加最后一个带有colspan值的空单元格:
<table>
<tr>
{$cols=4}
{foreach $arr as $v}
<td>{$v}</td>
{if !$v@last AND $v@iteration is div by $cols}
</tr><tr>
{/if}
{if $v@last AND $v@iteration is not div by $cols}
<td colspan="{$cols-$v@iteration%$cols}"></td>
{/if}
{foreachelse}
<td colspan="{$cols}">No data</td>
{/foreach}
</tr>
</table>
{$cols=4}
{foreach$arr作为$v}
{$v}
{如果$v@last及$v@iteration是div除以$cols}
{/if}
{如果$v@last及$v@iteration不是被$cols}div
{/if}
{foreachelse}
没有数据
{/foreach}
Foreach不带传统计数器变量且不带空行
<table>
<tr>
{foreach from=$aArray item=sValue name=tags_foreach}
{if $smarty.foreach.tags_foreach.index != 0 AND $smarty.foreach.tags_foreach.index mod 4 == 0}
</tr><tr>
{/if}
<td>
{$sValue}
</td>
{/foreach}
</tr>
{foreach from=$aArray item=sValue name=tags\u foreach}
{如果$smarty.foreach.tags\u foreach.index!=0和$smarty.foreach.tags\u foreach.index mod 4==0}
{/if}
{$sValue}
{/foreach}
请尝试
$counter%4==0
,因为$counter/4
是除法运算符。所以它不会给你零。要检查可分性,请始终使用%
是否要在每四个单元格添加一行?是的,每四个单元格添加一行。像OOOOOOOO,但新行上的每个“OOOO”。您可能应该使用模%,而不是除法/是的,当然。完全没能取代这个:)+1你比我跑得快。我键入是为了发布此解决方案。谢谢,但它不起作用,我收到错误,键入未定义索引:counter in
,我写了$counter/4
,只是举个例子,我不知道是否可以这样检查。使用“立即分配”可以工作,谢谢,但他们在每行之后都写
,他们没有检查$counter%4==0