phphot

php,linux,mysql,apache

小秘密ID:phphot
824660次访问,排名38好友61人,关注者169
php,apache,mysql,linux,html,css,javascript
phphot的文章
原创 3280 篇
翻译 0 篇
转载 11 篇
评论 571 篇
phphot的公告


经典推荐!!!
史上最全的小白兔的笑话

从一则笑话分析需求的陷阱

本科差点没能毕业,工作五年后年收入过百万

从小公司到500强 80年代人的面试宝典

那些雷得我们如此销魂的台词

老IT人追忆十五年IT从业经历

汶川大地震牛B语录集锦

千百万学子未来几年的出路

大学时代影响我的人生的10件大事-前辈的经验

噩梦的那一年-程序员之路

成功的背后!(给所有IT人)

一部让大学生少奋斗10年的成功宝典

职业生涯中12个最致命的想法

华为面试,第三轮被拒,想哭

一个牛人给java初学者的建议

黑客帝国之PHP与ASP.net不得不说的故事

一个应界毕业生的深圳求职经历。

程序人生:女程序员的求职奋斗史

2008春晚诗朗诵《心里话》之程序员版

最高境界---笑到肚子疼!!!!

是非人生——一个菜鸟程序员的5年人生路

网友10年跳槽经验总结

2008年IT行业10大热门职业调查结果出炉

百度实习经验总结

一点感慨,与诸君共勉,正式告别程序员生涯

程序员V.S.编程语言你上“贼船”了吗

上海IT精英群体某些行为特征被妖魔化

五百强各大行业简介+面试流程及技巧

08年各大公司薪水最新行情全面曝光


XML聚合
feedsky
最近评论
热舞人:斯蒂芬
Ian:這些文字如果是在一年半至兩年前看到了話,
說不定眼淚會很不爭氣的滴下來,
但是在現在的我,
看完這些文字,
還是能感同身受的~
gaozhen1990:哎..
电脑有什么好的呢
你想过没有即使你是程序员一个月能拿多少钱?
要干多少年才能买到房子~~
还有每天眼睛对着电脑,....!~~~
Neetgo:博主,你的文章我都保存了。我刚毕业一年,现在工作出现了些问题。

晚上不能上网,保存回去再细细着看,谢谢博主共享。
Neetgo:博主,你的文章我都保存了。我刚毕业一年,现在工作出现了些问题。

晚上不能上网,保存回去再细细着看,谢谢博主共享。
文章分类
收藏
    相册
    YY的图(禁)
    绝对精彩
    网上好图(禁)
    我的工作(禁)
    我的作品(禁)
    热门站
    baidu
    google
    yahoo
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 smarty模板:section循环块与foreach循环块收藏

    新一篇: 疯狂的程序员46 | 旧一篇: 工作经验缺失 研究生优势荡然无存

    接下来介绍一个section循环块与foreach循环块,本来它应该属于模板部分,但是由于它们是smarty的精华所在,而且与smarty程序设计部分联系非常紧密,所以就在本节单独拿出来讲一下。

    1. foreach:用于循环简单数组,它是一个选择性的section循环,它的定义格式为:

    {foreach from=$array item=array_id}
    {foreachelse}
    {/foreach}
    其中,from 指出要循环的数组变量,item为要循环的变量名称,循环次数由from所指定的数组变量的个数所决定。{foreachelse}用来当程序中传递过来的数组为空时的处理,下面是一个简单的例子:
    ===========================================
    example6.tpl
    ===========================================
    <html>
    <head><title>这是一个foreach使用的例子</title></head>
    <body>
    这里将输出一个数组:<br>
    {foreach from=$newsArray item=newsID}
    新闻编号:{$newsID}<br>
    新闻内容:{$newsTitle}<br><hr>
    {foreachelse}
    对不起,数据库中没有新闻输出!
    {/foreach}
    </body>
    </html>

    ==========================================
    example6.php
    ==========================================
    <?php
    /*********************************************
    *
    * 文件名: example6.php
    * 作 用: 显示实例程序2
    *
    * 作 者: 大师兄
    * Email: teacherli@163.com
    *
    *********************************************/
    include_once("./comm/Smarty.class.php");

    $smarty = new Smarty();
    $smarty->templates("./templates");
    $smarty-&gt;templates_c("./templates_c");
    $smarty-&gt;cache("./cache");
    $smarty-&gt;cache_lifetime = 0;
    $smarty-&gt;caching = true;
    $smarty-&gt;left_delimiter = "{";
    $smarty-&gt;right_delimiter = "}";

    $array[] = array("newsID"=&gt;1, "newsTitle"=&gt;"第1条新闻");
    $array[] = array("newsID"=&gt;2, "newsTitle"=&gt;"第2条新闻");
    $array[] = array("newsID"=&gt;3, "newsTitle"=&gt;"第3条新闻");
    $array[] = array("newsID"=&gt;4, "newsTitle"=&gt;"第4条新闻");
    $array[] = array("newsID"=&gt;5, "newsTitle"=&gt;"第5条新闻");
    $array[] = array("newsID"=&gt;6, "newsTitle"=&gt;"第6条新闻");

    $smarty-&gt;assign("newsArray", $array);

    //编译并显示位于./templates下的index.tpl模板
    $smarty-&gt;display("example6.tpl");
    ?&gt;

    =================================================
    example6.php 输出文件
    =================================================
    <html>
    <head><title>foreach使用的例子</title></head>
    <body>
    这里将输出一个数组:<br>

    新闻编号:1<br>
    新闻内容:第1条新闻<br><hr>

    新闻编号:2<br>
    新闻内容:第2条新闻<br><hr>

    新闻编号:3<br>
    新闻内容:第3条新闻<br><hr>

    新闻编号:4<br>
    新闻内容:第4条新闻<br><hr>

    新闻编号:5<br>
    新闻内容:第5条新闻<br><hr>

    新闻编号:6<br>
    新闻内容:第6条新闻<br><hr>
    </body>
    </html>

    foreach还可以用foreachelse来匹配,用foreachelse来表示当传递给foreach的数组为空值时程序要执行的操作,具体的使用方法,请参考

    手册的说明。

    2. section:
    section的产生是为解决foreach的不足的,与foreach一样,它用于设计模板内的循环块,它较为复杂,可极大程序上满足程序需要,所以在程序中我习惯使用它而不使用foreach,基本原形为:

    {section name = name loop = $varName[, start = $start, step = $step, max = $max, show = true]}

    name: section的名称,不用加$
    $loop: 要循环的变量,在程序中要使用assign对这个变量进行操作。
    $start: 开始循环的下标,循环下标默认由0开始
    $step: 每次循环时下标的增数
    $max: 最大循环下标
    $show: boolean类型,决定是否对这个块进行显示,默认为true

    这里有个名词需要说明:
    循环下标:实际它的英文名称为index,是索引的意思,这里我将它译成"下标",主要是为了好理解。它表示在显示这个循环块时当前的循环索引,默认从0 开始,受$start的影响,如果将$start设为5,它也将从5开始计数,在模板设计部分我们使用过它,这是当前{section}的一个属性,调用方式为Smarty.section.sectionName.index,这里的sectionName指的是函数原型中的name属性。
    :{section}块具有的属性值,分别为
    1. index: 上边我们介绍的"循环下标",默认为0
    2. index_prev: 当前下标的前一个值,默认为-1
    3. index_next: 当前下标的下一个值,默认为1
    4. first: 是否为第一下循环
    5. last: 是否为最后一个循环
    6. iteration: 循环次数
    7. rownum: 当前的行号,iteration的另一个别名
    8. loop: 最后一个循环号,可用在section块后统计section的循环次数
    9. total: 循环次数,可用在section块后统计循环次数
    10. show: 在函数的声明中有它,用于判断section是否显示

    它们的具体属性大家可以参考手册,在程序中可灵活使用它的这些属性,模板部分我就使用过index属性,大家可以回过头去看看。同样,{section}也可以配合使用{sectionelse},用来表示传入的数组变量为空时对模板进行的处理。

    我们把上边的那个例子使用{section}来替代{foreach}来实现现样的功能,注意,在这个例子中我只将tpl模板中的{foreach}用

    {section}来实现,php程序文件中没有任何改动,同时加了{sectionelse}处理块:

    ===========================================
    example7.tpl
    ===========================================
    <html>
    <head><title>这是一个foreach使用的例子</title></head>
    <body>
    这里将输出一个数组:<br>
    {section name=loop, loop=$News}
    新闻编号:{$News[loop].newsID}<br>
    新闻标题:{$News[loop].newsTitle}<br><hr>
    {sectionelse}
    对不起,没有任何新闻输入!
    {/section}
    </body>
    </html>

    ==========================================
    example6.php
    ==========================================
    <?php
    /*********************************************
    *
    * 文件名: example7.php
    * 作 用: 显示实例程序2
    *
    * 作 者: 大师兄
    * Email: teacherli@163.com
    *
    *********************************************/
    include_once("./comm/Smarty.class.php");

    $smarty = new Smarty();
    $smarty->templates("./templates");
    $smarty-&gt;templates_c("./templates_c");
    $smarty-&gt;cache("./cache");
    $smarty-&gt;cache_lifetime = 0;
    $smarty-&gt;caching = true;
    $smarty-&gt;left_delimiter = "{";
    $smarty-&gt;right_delimiter = "}";

    $array[] = array("newsID"=&gt;1, "newsTitle"=&gt;"第1条新闻");
    $array[] = array("newsID"=&gt;2, "newsTitle"=&gt;"第2条新闻");
    $array[] = array("newsID"=&gt;3, "newsTitle"=&gt;"第3条新闻");
    $array[] = array("newsID"=&gt;4, "newsTitle"=&gt;"第4条新闻");
    $array[] = array("newsID"=&gt;5, "newsTitle"=&gt;"第5条新闻");
    $array[] = array("newsID"=&gt;6, "newsTitle"=&gt;"第6条新闻");

    $smarty-&gt;assign("newsArray", $array);

    //编译并显示位于./templates下的index.tpl模板
    $smarty-&gt;display("example6.tpl");
    ?&gt;

    =================================================
    example7.php 输出文件
    =================================================
    <html>
    <head><title>foreach使用的例子</title></head>
    <body>
    这里将输出一个数组:<br>

    新闻编号:1<br>
    新闻内容:第1条新闻<br><hr>

    新闻编号:2<br>
    新闻内容:第2条新闻<br><hr>

    新闻编号:3<br>
    新闻内容:第3条新闻<br><hr>

    新闻编号:4<br>
    新闻内容:第4条新闻<br><hr>

    新闻编号:5<br>
    新闻内容:第5条新闻<br><hr>

    新闻编号:6<br>
    新闻内容:第6条新闻<br><hr>
    </body>
    </html>

    这里的{section}块的对于变量的命名方式感觉有些别扭,不过没关系,你只要记住模板变量使用:

    $loopName[name].var这种模式就行了,loopName为loop处赋予的变量名,[name]为name处赋予的字符串,.后为为你要在程序数组中设定要与值相对应的下标名称就行了。

    发表于 @ 2008年05月16日 09:58:41|评论(loading...)|编辑

    新一篇: 疯狂的程序员46 | 旧一篇: 工作经验缺失 研究生优势荡然无存

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © phphot