我有多维数组。
Array (4)
0 => Array (6)
0 => 0
1 => "100100105"
2 => "honey"
3 => "SUP"
4 => 0
5 => 0
1 => Array (6)
0 => 1
1 => "100100608"
2 => "bunny"
3 => "MEM"
4 => 0
5 => 0
2 => Array (6)
0 => 1
1 => "100100609"
2 => "munny"
3 => "DISTSTD"
4 => 0
5 => 0
3 => Array (6)
0 => 2
1 => "100300054"
2 => "sunny"
3 => "MEM"
4 => 0
5 => 0
想要使用smarty将当前的零级值与下一级零值(如Array [0] [0] == Array [1] [0])进行比较。
我只能获得当前元素值。如何在当前循环中获取下一个元素值
{{foreach from=$volume item=element}}
{{if $element@iteration > 1}}
{{$element[0]}}
{{/if}}
{{/foreach}}
答案 0 :(得分:1)
要访问Smarty中的数组,您需要分配要访问变量的索引,以便能够索引到数组中
{foreach from=$volume item=element name=foo}
{assign var=nextIteration value=$smarty.foreach.foo.iteration + 1}
{$volume[$nextIteration]}
{/foreach}
我想做你要做的比较:
{foreach from=$volume item=element name=foo}
{assign var=nextIteration value=$smarty.foreach.foo.iteration + 1}
{if ($nextIteration + 1) >= count($volume) }
Last element
{elseif $volume[$nextIteration][0] == $element[0]}
They matched!
{else}
They are different!
{/if}
{/foreach}
然而,这是使用Smarty的一种非常糟糕的方式,因为它以一种非常丑陋的方式打破了MVC模式。只需编写一个Smarty plugin来处理这样的复杂情况,你会好得多。是的,它可能仍然会打破MVC模式,但它至少是可维护的,而不是在模板中包含复杂的代码。