php外包、微信开发、app开发尽在蓝普!PHP技术服务商

Smarty的foreach使用技巧<一>

在smarty模板语言中,因为存在一定的局限性。所以循环中经常会碰到一些特殊的处理,所以直奔主题:

案例一:要如下显示数据,M形排列。在循环中加以控制——换行。

 1   →     3  5  7
 ↓
 2    4  6  8
代码:
单单说回行,大家都可以很简单的处理:
<!–{ from=$array key=key item=item}–>
<!–{if $key %2 !=0 && $key!=0}–>
 {$item}
<!–{/if}–>
<!–{/foreach}–>
但常常需求并不是这么简单,如果里面的数字(1,2,3…)换作是一张图片和一行文字呢,或者更复杂的显示方式,就要用到div和css。假设 1+2 放到同一div中:
<div>
 <div>1</div>
 <div>2</div>
</div>

<div>
 <div>3</div>
 <div>4</div>
</div>
     …
思路是这样的,逢key%2==0就需要重新<div>…</div>:
<!–{foreach  from=$array key=key item=item}–>
<!–{if $key %2 ==0}–>
<div>
<!–{/if}–>
<div>{$item}</div>

<!–{if $key %2 ==0}–>
</div>//用来闭合上面class=item的div
<!–{/if}–>
<!–{/foreach}–>
这样,问题也就接踵而来了,如果数据恰恰到奇数个呢,岂不是没有了下面的闭合</div>,所以这里就要用到一个判断,和一个 循环时经常忽略的一个元素——name。代码稍作修改:

<!–{foreach  from=$array key=key item=item name=loop1}–>
<!–{if $key %2 ==0}–>
<div>
<!–{/if}–>
<div>{$item}</div>

<!–{if $key %2 ==0 || $smarty.foreach.loop1.last%2!==0}–>
</div>//用来闭合上面class=item的div
<!–{/if}–>
<!–{/foreach}–>

标签:, , ,

转载请注明来源蓝普网络并以链接形式标明本文地址
本文链接: http://www.wbphp.cn/html/y12/2021.html

作者:牡丹网景 | 日期:2009-12-05 | 分类:心情日记 | 评论:0 条 | 浏览:62


上一篇:
下一篇:

发表评论

*

* 以便邮件回复


给我汇款 | 合作流程 | 看看我们 | 加入我们 Copyright 2008-2016 php外包与洛阳php培训服务商. Some Rights Reserved. 豫ICP备12025288号-1