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

发布于 2024-11-15 23:17:39 字数 105 浏览 0 评论 0原文

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

我该怎么做?这清楚吗?

I am using Smarty to output an array to an HTML table. I want each row of the table to have no more than 8 items in it. If the array has more than 8 items then the code would make a new row for the overflowing items.

How can I do this? Is this clear?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

余厌 2024-11-22 23:17:39

我已经很久没有使用 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 项之前它都会添加一个新行。我们不希望第一项发生这种情况,所以我们也检查一下。

It's been a long time since I've used Smarty, but you should be able to do this like this:

<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>

The modulus operator only returns 0 if the index is dividable by 8, So before every 9th item it adds a new row. We don't want this for the first item to happend so let's check that as well.

情丝乱 2024-11-22 23:17:39

我过去是这样做的:

<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>

Here's how I did it in the past:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文