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}

しかし、これはMVCパターンを非常に見苦しい方法で壊してしまうため、Smarty の使用方法としては非常に悪い方法です。このような複雑な状況を処理するには、 Smarty プラグインを作成するだけで十分です。ええ、それでも MVC パターンが壊れる可能性はありますが、テンプレート内に複雑なコードを含める代わりに、少なくとも保守可能です。

于 2013-02-04T10:40:34.373 に答える