在smarty中查找具有特定属性的数组的最后一个元素

时间:2010-02-08 18:05:55

标签: php smarty

我在smarty中循环遍历嵌套数组,每个元素的状态为“active”或“inactive”。如何检测数组中设置为活动的最后一个元素?

示例代码:

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

 {/if}
{/foreach}

4 个答案:

答案 0 :(得分:1)

数组是按数字还是按键索引?如果数字,我认为你的循环中的item参数是索引,所以你可以在你的if中使用它。如果不是那么你必须调用count来获得项目总数,然后手动增加。或者您可以在开始循环之前使用array_values将键转换为数字。不知道如何在Smarty中做任何这些。

答案 1 :(得分:1)

只需对foreach语句使用step参数,并使用预定义变量$ smarty.foreach。 NAME .last

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

答案 2 :(得分:0)

我认为这是在模板逻辑之外的东西,应该在脚本中完成。

答案 3 :(得分:-1)

我不知道“聪明”是什么,但通常的做法是保持对最后找到的元素的引用;如,

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

然后,在循环结束时,$last_step将成为对上一个有效$step的引用。你不需要实际的元素,只需要它的索引,然后保存索引。