0

我有多维数组。

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

1 回答 1

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 插件来处理这样的复杂情况。是的,它可能仍然会破坏 MVC 模式,但它至少是可维护的,而不是在模板中包含复杂的代码。

于 2013-02-04T10:40:34.373 回答