我在smarty中循环遍历嵌套数组,每个元素的状态为“active”或“inactive”。如何检测数组中设置为活动的最后一个元素?
示例代码:
{foreach from=$steps item=step name=step}
{if $step.status == 'active' && ????? }
{/if}
{/foreach}
答案 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
的引用。你不需要实际的元素,只需要它的索引,然后保存索引。