Как найти последний индекс цикла foreach в smarty

Как получить последнее значение индекса цикла foreach в smarty, я m new для smarty Я использовал этот код, но его не работает

{foreach from=$cityList key=myId item=i name=foo}
 {$i.location_name}{if $main_smarty.foreach.foo.last}<hr>{else}-{/if}
  {/foreach}

Я хочу, чтобы, когда их последнее название города после этого получило горизонтальную линию, в противном случае это похоже на Индию-США-Японию, но, наконец, наступает Япония-Китай

В .php я использую

<?php
include_once('Smarty.class.php');
$main_smarty = new Smarty;

query to find citylist
$main_smarty->assign('cityList',$cityList);
?>

Ответы

Ответ 1

Вы ищете это:

{foreach from=$cityList key=myId item=i name=foo}
    {if $smarty.foreach.foo.last}
        <p>This is the last item from the array!</p>
    {/if}
{/foreach}

Как вы видите, свойство, которое вам нужно проверить, это $smarty.foreach.foo.last, где foo - это имя вашего объекта.

Ответ 2

Если $arr - массив, который вы передали в {foreach}, это сделает трюк:

{$arr|@end}

Фактически, его не нужно вызывать внутри {foreach}

Ответ 3

{foreach from=$foo item=$bar name=foo}
    {if $smarty.foreach.foo.last}
        Total of({$smarty.foreach.foo.total}) Items <br />
        Data ({$bar})
    {/if}
{/foreach}

Ответ 4

Я думаю, что новые версии Smarty имеют более новую технику решения этой проблемы, чем показывают другие ответы. Пример из последних документов (на момент написания) использует @last -property. Вы можете использовать его следующим образом: {if [email protected]}...
Полный пример:

{* Add horizontal rule at end of list *}
{foreach $items as $item}
  <a href="#{$item.id}">{$item.name}</a>{if [email protected]}<hr>{else},{/if}
{foreachelse}
  ... no items to loop ...
{/foreach}

Ответ 5

Это действительно сработало для меня:

{[email protected]}
{$myvar.someproperty}

Ответ 6

Мое решение:

PHP

Array
(
    [0] => car
    [1] => toy
    [2] => cat
    [3] => gun
    [4] => dog
)

.tpl

{foreach from=$interest key=$key item=$item}
    {$item.value}{if $key < ($interest|count - 1)}, {/if} 
{/foreach}

Результат

My interest: 
car, toy, cat, gun, dog