Как я могу ограничить количество циклов в массиве, используя 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}
Спасибо
{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>)
if
if $smarty.foreach.friend_list.index % 8
</tr><tr>
Здесь следует обработать первые 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}
добавьте счетчик перед открытием foreach,
$i=1;
увеличьте счетчик в каждом цикле (то есть внутри foreach)
if($i = 8) break; $i++;
(где 8 - ваш предел)
ваш код выглядит неправильно, поэтому я не стал его вставлять. Разберитесь () {} в проблемах