Ограничить количество циклов в массиве - PullRequest
0 голосов
/ 03 февраля 2012

Как я могу ограничить количество циклов в массиве, используя 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 ]

1 голос
/ 03 февраля 2012
{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 10 раз и остановите

ps: я намеренно оставил блок if с if $smarty.foreach.friend_list.index % 8 на случай, если потребуется более 8петли.В противном случае этот блок может быть удален (без изменений </tr><tr>)

0 голосов
/ 03 февраля 2012

Здесь следует обработать первые 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}
0 голосов
/ 03 февраля 2012

добавьте счетчик перед открытием foreach,

$i=1;

увеличьте счетчик в каждом цикле (то есть внутри foreach)

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

(где 8 - ваш предел)

ваш код выглядит неправильно, поэтому я не стал его вставлять. Разберитесь () {} в проблемах

...