Smarty belli bir özelliği olan bir dizinin son elemanı bulmak

4 Cevap php

Ben smarty iç içe bir dizi döngü yaşıyorum, ve her eleman 'etkin' veya 'pasif' bir statüye sahiptir. Nasıl aktif ayarlanır dizideki son öğe tespit edebilirsiniz?

Örnek kod:

{foreach from=$steps item=step name=step}
 {if $step.status == 'active' && ????? }

 {/if}
{/foreach}

4 Cevap

Dizi sayısal veya anahtar endeksli? Sayısal eğer ben size eğer bu kullanabilirsiniz böylece döngü içinde item argüman dizin olduğunu düşünüyorum. onun o zaman sen aramak zorunda değilse count öğelerin toplam sayısını almak ve daha sonra elle artırmak. veya array_values sizin döngü başlamadan önce sayısal için anahtarlarını dönüştürmek için kullanabilirsiniz. Olsa Smarty hiçbirini yapmak nasıl gerçekten emin değil.

Sadece foreach ifadesi için adım parametresini kullanın ve önceden tanımlı değişken $ smarty.foreach kullanabilirsiniz. NAME. Son

{foreach from=$steps item=step name=step_foreach}
    {if $step.status=="active" && $smarty.foreach.step_foreach.last}
        last step is active
    {/if}
{/foreach}

Ben bunun dışında şablon mantığı giden bir şey, ve script yapılması gerektiğini düşünüyorum.

Ben "çokbilmiş" ne hiçbir fikrim yok, ama bunu yapmak için her zamanki yolu sadece bulunan son öğe için bir başvuru tutmak için; örneğin,

{foreach from=$steps item=step name=step}
    {if $step.status=="active" && ...}
        $last_step = $step
    {/if}
{/foreach}

Ardından, döngünün sonunda, $last_step son aktif bir referans olacaktır $step. Bu gerçek elemanı, sadece kendi indeksi istemiyorum, sonra yerine dizin kaydedin.