Smarty:根据数组中的项目数输出行数

时间:2011-06-16 20:09:47

标签: php html smarty

我正在使用Smarty将数组输出到HTML表格。我希望表中的每一行都不超过8个项目。如果数组有超过8个项目,那么代码将为溢出项目创建一个新行。

我该怎么做?这是清楚的吗?

2 个答案:

答案 0 :(得分:3)

自从我使用Smarty以来已经有很长一段时间了,但你应该可以这样做:

<tr>
{foreach from=$items key=myId item=i name=foo}
  {if $smarty.foreach.foo.index % 8 == 0 && $smarty.foreach.foo.index > 0 }
     </tr><tr>
  {/if}
  <td>{$i.label}</td>
{/foreach}
</tr>

如果索引可以被8分割,则模数运算符仅返回0,因此在每第9个项之前它会添加一个新行。我们不希望第一个项目发生这种情况,所以我们也要检查一下。

答案 1 :(得分:1)

以下是我过去的做法:

<table>
    {foreach from=$array item='array_item' name='array_items'}
        {if $smarty.foreach.array_items.first}
            {* first item - start of all the rows *}
            <tr><td>{$array_item}</td>
        {elseif $smarty.foreach.array_items.index % 8 == 0}
            {* 8 items added to row - start new row *}
            </tr><tr><td>{$array_item}</td>
        {elseif $smarty.foreach.array_items.last}
            {* last item - end the row (or add logic to fill out row with empty cells if needed) *}
            <td>{$array_item}</td></tr>
        {else}
            {* normal item - add cell *}
            <td>{$array_item}</td>
        {/if}
    {/foreach}
</table>