Home >php教程 >php手册 >smarty循环操作

smarty循环操作

WBOY
WBOYOriginal
2016-06-13 09:36:231235browse

php smarty模板引擎里面有两种数据循环的方式,分别是 foreach 和 section 循环。下面一一对这两种循环方式做一下介绍。

(1)smarty foreach 循环

foreach用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的section不同,foreach的语法比section的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个foreach标记必须与关闭标记/foreach成对出现。

foreach循环有四个属性,from,item,name,key,其中from和item是必须的。

foreach循环可以嵌套,嵌套的foreach的名称应当互不相同。

在from属性没有值时,将执行{foreachelse}片段。

foreach循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中"name"是name属性。例如:

$smarty.foreach.name.index 当前数组索引,从零开始。

$smarty.foreach.name.iteration 当前循环次数,与index不同,从1开始,每次循环增长1。

$smarty.foreach.name.first 在当前{foreach}循环处于初始位置时值为TRUE。

$smarty.foreach.name.last 在当前{foreach}循环处于最终位置是值为TRUE。

$smarty.foreach.name.show show是{foreach}的参数. show是一个布尔值。如果值为FALSE,{foreach}将不被显示。如果有对应的{foreachelse},将被显示。

$smarty.foreach.name.total total包括{foreach}将循环的次数,既可以在{foreach}中使用,也可以在之后使用。

注意:name属性仅在需要访问{foreach}属性时有效,与{section}不同。访问未定义name的{foreach}属性不会抛出一个错误,但将导致不可预知的结果。

示例:

{foreach from=$newsList item=news key=newsId name=news}

php smarty foreach 循环示例


{/foreach}

(2)smarty section 循环

{section name="sn" loop="$BusinesList4"}

  • {$smarty.section.sn.index+1}{$BusinesList4[sn].2}

  • {/section}

    可以看出,无论是索引还是关联数组用起来都是很方便。下面介绍下section中各个属性的说明:

    1、smarty section中的属性

    name:(必选) 是section循环的名称只是标示循环唯一的名字没有特别意义,前面没有$符号;

    loop: (必选)是在php声明中的变量名称,用来标示是循环哪一个数组(即要循环数组名)需要使用$;

    start: (可选)循环执行的初始位置. 如果该值为负数,开始位置从数组的尾部算起. 例如:如果数组中有7个元素,指定start为-2,那么指向当前数组的索引为5. 非法值(超过了循环数组的下限)将被自动调整为最接近的合法值.

    step: (可选)如其它语言的循环,是一个步长,如果为负数,则倒序循环;

    max:(可选)循环的最大下标,如果是1则只循环1次,如果为2则循环2次;

    show:(可选)默认为true即显示。如果设置了{sectionelse}。表示如果数组没有内容的时候显示这部分的内容;如果show为false则显示这部分。如果没有设置{sectionelse}则不输出该数组。

    2、smarty中section中的变量

    index:用于显示当前循环的索引,从0开始(如果指定了start属性,那么由该值开始),每次加1(如果指定了step属性,那么由该值决定).如果没有指定step和start属性,此值的作用和iteration类似,只不过从0开始而已.

    index_prev:用于显示上一个循环索引值. 循环开始时,此值为-1.

    index_next:用于显示下一个循环索引值. 循环执行到最后一次时,此值仍然比当前索引值大1(如果指定了step,取决于此值).

    iteration:用于显示循环的次数.iteration 不像index属性受start、step和max属性的影响,该值总是从1开始(index是从0开始的).rownum 是iteration的别名,两者等同.

    first:如果当前循环第一次执行,first 被设置为true.

    last:如果当前循环执行到最后一次,last 被设置为true.

    rownum:用于显示循环的次数. 该属性是iteration的别名,两者等同.

    loop:用于显示该循环上一次循环时的索引值. 该值可以用于循环内部或循环结束后.

    show:是 section 的参数. show 取值为布尔值 true 或 false. 如果设置为 false,该循环将不显示. 如果指定了 sectionelse 子句,该字句是否显示也取决于该值.

    total:用于显示循环执行总的次数. 可以在循环中或执行结束后调用此属性.

    简单示例:

    {section name=loop loop=6}
    id: {$smarty.section.loop.index+1}
    {/section}

    smarty section 嵌套循环示例:

    {section name=”sn” loop=”$dis_cType”}
    {$BusinesList=${$dis_cType[sn].2}}
    {section name=sn2 loop=$BusinesList}

  • {$smarty.section.sn2.index+1}{$BusinesList[sn2].2}

  • {/section}
    {/section}

    您可能感兴趣的文章

    • smarty 模板中循环表格补充不全的td
    • smarty模板中for循环的扩展插件
    • smarty循环表格并补充表格td不足的情况
    • smarty变量操作符总结
    • Smarty模板变量操作符总结
    • smarty模板中给信息添加最新标签
    • smarty模板中如何生成随机数
    • smarty逻辑运算符号总结
    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn