【问题标题】:Compare Multidimensional array values using smarty使用 smarty 比较多维数组值
【发布时间】:2013-01-17 10:18:28
【问题描述】:

我有多维数组。

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

【问题讨论】:

    标签: php smarty


    【解决方案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 模式,但它至少是可维护的,而不是在模板中包含复杂的代码。

    【讨论】:

    • 非常感谢。很有帮助
    猜你喜欢
    • 2011-03-11
    • 2012-01-14
    • 1970-01-01
    • 2013-02-23
    • 2012-11-24
    • 1970-01-01
    • 2022-12-18
    • 2021-12-08
    • 2016-12-20
    相关资源
    最近更新 更多