2010-06-25 45 views
14

Cómo acceder al último valor de índice del bucle foreach en sabelotodo, soy nuevo para Smarty He utilizado este código, pero no su trabajo¿Cómo encontrar último índice del bucle foreach en Smarty

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

i quieren que cuando su es el nombre de la ciudad después de esta última su llegado línea horizontal por lo demás es igual que la India-EE.UU.-Japón-pero al fin se vienen entre Japón y China

en .php yo uso

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

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

por favor proporcione más código, para que podamos determinar el problema, el fragmento que está proporcionando me parece bien y debería funcionar bien – jigfox

Respuesta

22

Usted está buscando éste:

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

Como usted ve, la propiedad que necesita verificar es $smarty.foreach.foo.last donde foo es el nombre de su objeto.

+0

¿qué es $ smarty aquí puedo usar otra cosa en ese lugar como uso $ main_smarty Y en .php asigno $ main_smarty-> assign ('cityList', $ cityList); –

+0

Por lo que sé, '{$ smarty}' es una variable reservada y debes usarla. No debería importar si su objeto php recibe un nombre diferente. Puedes encontrar más sobre '{$ smarty}' aquí: http://www.smarty.net/manual/en/language.variables.smarty.php –

+1

utilicé $ smarty también pero no está funcionando –

4

Si $ matriz es la matriz que pasado a {foreach}, esto hará el truco:

{$arr|@end} 

De hecho, no tiene que ser llamado dentro de un foreach} {

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

Creo que las nuevas versiones de Smarty tienen una nueva técnica de resolver este problema de lo que muestran las otras respuestas. El ejemplo del latest docs (al momento de escribir) está utilizando la propiedad @last. Se puede utilizar de esta manera: {if [email protected]}...
Ejemplo completo:

{* 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} 
0

Mi solución:

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} 

Resultado

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

Último elemento: '{if $ key> = ($ interest | count - 1)}. {/ If}' –

Cuestiones relacionadas