限制通过数组的循环数

时间:2012-02-03 01:39:19

标签: php smarty

如何使用Smarty限制通过数组的循环量?假设给定数组中有32个项目,我想将循环次数限制为8个。

{foreach from=$friend_list key=userId item=userInfo name=friend_list}
    {if $smarty.foreach.friend_list.index % 8 && $smarty.foreach.friend_list.index > 0 }
        </tr><tr>
    {/if}
        <td height='50' width='50'>
            <img border='0' height='50' src='http://graph.facebook.com/{$userInfo.user_uid}/picture' style='display:block;' width='50' />
        </td>
{/foreach}

由于

3 个答案:

答案 0 :(得分:1)

{foreach from=$friend_list key=userId item=userInfo name=friend_list}
  {if $smarty.foreach.friend_list.index < 8 }
    {if $smarty.foreach.friend_list.index % 8 && $smarty.foreach.friend_list.index > 0 }
        </tr><tr>
    {/if}
        <td height='50' width='50'>
            <img border='0' height='50' src='http://graph.facebook.com/{$userInfo.user_uid}/picture' style='display:block;' width='50' />
        </td>
  {/if}
{/foreach}

阅读此Smarty - foreach loop 10 times and stop

ps:我故意将if块留给if $smarty.foreach.friend_list.index % 8,以防万一需要超过8个循环。否则可以删除该块(保持</tr><tr>完整)

答案 1 :(得分:0)

在打开foreach之前添加一个计数器,

$i=1;

增加每个循环的计数器(即在foreach内部)

if($i = 8) break; 
$i++;

(其中8是你的限制)

你的代码看起来都错了,所以我没有把它放进去。排除(){}问题

答案 2 :(得分:0)

这里应该处理前8个条目并忽略其余条目。不幸的是,每个人都无法摆脱Smarty。

{foreach from=$friend_list key=userId item=userInfo name=friend_list}
    {if $smarty.foreach.friend_list.iteration < 8}
        <td height='50' width='50'>
            <img border='0' height='50' src='http://graph.facebook.com/{$userInfo.user_uid}/picture' style='display:block;' width='50' />
        </td>
    {/if}
{/foreach}