php smarty模板引擎是目前最著名的PHP模板引擎之一,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,使得PHP程序员和前端人员分离;smarty 里有两种数据循环的方式,分别是 foreach 和 section 循环。下面主要对这两种循环方式做一下介绍。

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

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

php模板引擎循环start,smarty模板引擎foreach和section循环操作详解相关推荐

  1. smarty 模板 for循环 php,smarty模板中类似for循环功能的实现代码

    需求:在页面使用smarty循环100次输出,类似for循环100次. 例如: 复制代码 代码示例: {section name=total loop=100} {$smarty.section.to ...

  2. smarty 模板 for循环 php,smarty模板中for循环的扩展插件

    smarty是php开发中非常流行的一个模板,以前曾发过一篇文章php smarty中文截取插件开发示例是说明如何开发smarty插件的,这篇文章将分享一下如何为smarty模板做一个for循环的扩展 ...

  3. linux循环脚本while循环,shell脚本之循环语句for,while,until用法的详解

    关于Linux中循环语句for,while,until用法的详解 for,while,until这些循环结构体在Linux的script中是使用非常多的,所以掌握他们的用法是很必要的,以下是我整理的关 ...

  4. php模板引擎循环start,PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  5. php模板怎么导入数据类型,smarty模板引擎之分配数据类型,smarty模板数据类型_PHP教程...

    smarty模板引擎之分配数据类型,smarty模板数据类型 本文实例讲述了smarty模板引擎之分配数据类型用法.分享给大家供大家参考.具体分析如下: 一.分配基本数据 //分配基本数据 $smar ...

  6. php中smarty末班引擎,PHP使用smarty模板引擎

    Smarty是一个使用PHP写出来的模板引擎,目的是分离php代码和html代码.是一个编译型模板引擎. 安装 (1)下载Smarty, (2)在web服务器文档根目录新建一个smarty/文件夹, ...

  7. php中smarty末班引擎,php之smarty模板引擎

    前面的话 对PHP来说,有很多模板引擎可供选择,但是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.像PHP一样拥有丰富的函数库,从统计字数到自动缩进.文字环绕以及正则表达式都 ...

  8. 【c++】因模板类导致的 LNK2019 错误:“ 无法解析的外部符号 ” 详解

    最近在做项目的时候用到了模板类 果不其然出现了那个错误 LNK2019:无法解析的外部符号 网上百度到的结果繁花怒放,大多数不符合我的需求,故自己研究了下C++的模板类规则,试图找出问题所在 ---- ...

  9. 解题报告:P3834 【模板】可持久化线段树 2(主席树)详解

    P3834 [模板]可持久化线段树 2(主席树) 题解 P3834 [[模板]可持久化线段树 2(主席树)] 1)静态求第k大数 可持久化线段树,不能用堆的方法存子结点了,所以用指针l表示左儿子r表示 ...

最新文章

  1. Contextualizing Airbnb by Building Knowledge Graph
  2. 华为鸿蒙会议安排,2020华为HDC日程确定,鸿蒙、HMS以及EMUI 11成最关注点
  3. 基线长度中误差的计算_电子战支援实施中的测向技术
  4. 《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结
  5. 若想学 HTML,应从何入手?
  6. LeetCode OJ1:Reverse Words in a String
  7. random number in groovy
  8. 【动态主席树】ZOJ 2112【树状数组+主席树】
  9. STS下载教程(include官网无法下载解决方案)
  10. 《颠覆我认知的30篇文章 》阅读笔记(一)
  11. Stanford University CS144 Lab2 The TCP Receiver
  12. IDEA找不到应用程序(localhost:8080)
  13. SLAM论文笔记---- FlowNet及FlowNet2.0
  14. 人工智能正在改变市场营销的行为方式
  15. Origin批量处理多列数据(多列重复相同运算)
  16. linux挂死oops定位问题
  17. 给定一个由N个非负整数构成的序列,我们来定义一下序列的中位数,如果N是奇数,在对序列排序后,中位数就是最中间的那个数,即排序后,中位数的位置为(N+1)/2,这里序列的位置从1开始。如果N是偶数,则中
  18. Mac干货 如何快速的在Mac上安装Windows双系统?虚拟机Parallels Desktop +Bootcamp安装
  19. JVM系列五JVM监测工具[整理中(转)
  20. 【反欺诈】浅析新形势下反保险欺诈举措

热门文章

  1. Tensorflow——反卷积
  2. 鼠标移入移出时定时器加速的原因_《Among Us》网易UU加速器带你体验太空狼人杀...
  3. u3d:后期屏幕渲染特效
  4. 【君思智慧园区】物业综合管理系统,物业管理收费软件系统包括哪些?
  5. Python爬虫实战 使用线程池批量爬取必应1080P高清壁纸
  6. Python永久更改镜像源(一键操作)
  7. 自定义view初学习(仿小米闹钟)
  8. 基于机智云物联网平台的空气质量多功能检测系统设计
  9. 超简单的一键重装win10教程,还不会装win10的你赶紧✔get一下!
  10. “佛祖保佑永不宕机永无BUG”的文本