Smarty3——foreach
foreach and foreachelse篇
foreach用于遍历数组,可以是非关联数组,与section相比要简单些,在smarty3中可以接受没有名称的属性,也可以使用smarty2有名称的属性。与{section}*(只能循环连续的索引数组)相比较,{foreach}可以做任何{section}可以做到的因此也推荐使用{foreach}
- 可以嵌套循环
- 当foreach的值为空时,进行foreachelse运行
- 属性:
@index是当前数组索引,从0开始计算。
@iteration 是当前循环的次数,和index不同,他从 1 开始,在每次循环都会加1。
@first 当循环{foreach}是首次循环时,first将为TRUE,
@ last 当{foreach}循环到了最后一次时,last将为TRUE
@show
@tottal 是整个{foreach}循环的次数。 total可以在{foreach}内部,或者之后使用 - 语法命令:{break}终止循环, {continue}将跳过当前本次循环并进入下一次循环
- 代替指定的 key 变量,可以通过{item@key}来使用当前循环的key
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
{foreach from=$foreach_else item=first_loops_element name=first_loops_name key=fisrt_loops_key}
{foreach} example
index.php:
$foreach_else = array(
'first_layout1' => array('second_layout1'),
'first_layout2' => array('second_layout2'),
'first_layout3' => array('second_layout3')
);
$res = array();
foreach.tpl: {foreach $foreach_else as $item}
第一次循环的键值:{$item@key}
<br>
{foreach $item as $value}
进入第二次循环:{$value@key}=>{$value}
<br>
{foreachelse}
this is the loop end
{/foreach}
{/foreach}
{foreach $res as $r}
{$r.id}
{$r.name}
{foreachelse}
.. no results ..
{/foreach}
then the result:
第一次循环的键值:first_layout1
进入第二次循环:0=>second_layout1
第一次循环的键值:first_layout2
进入第二次循环:0=>second_layout2
第一次循环的键值:first_layout3
进入第二次循环:0=>second_layout3
如果循环一个迭代器的话,比循环一个数组快。
@index
{foreach $connect_arr as $item}
{if $item@index eq 3}
输出 :{$item} {/if}
{foreachelse}
数组的索引小于 3
{/foreach}
@iteration
index.php:
$num_count = array(1, 2, 3, 4, 5, 6);
tpl.tpl
{foreach $num_count as $name}
{if $name@iteration is div by 4}
<b>{$name@iteration}</b>
{/if}
{$name}
{/foreach}
//is even/odd by 可以用于奇偶交错
$num_count = array(1, 2, 3, 4, 5, 6,7,8,);
{foreach $num_count as $name}
{if $name@iteration is even by 3}
<b>{$name}</b>
{else}
{$name}
{/if}
{/foreach}
Smarty3——foreach的更多相关文章
- Smarty3学习笔记
Smarty3 笔记 By 飞鸿影~ -- :: Smarty入门 1.什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离, 使php程序员只 ...
- smarty3.0中文手册文档API及使用指南
1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...
- Smarty3配置及入门语法
一.Smarty3配置 下载Smarty文件 在Smarty的官方网站下载Smarty文件,解压下载到的Smarty文件,Smarty的库文件就在libs文件夹中. 我使用的PHP调试环境的程序集成包 ...
- Smarty标签运算,控制结构[if,for,foreach,section,while]
Smarty标签运算: 在页面上做简单的运算[temp5.html] 条件判断if 循环结构 for foreach用得比较多,foreach例子从数据库取出的数据 section功能和foreach ...
- 8. Smarty3:模版中的内置函数
smarty3中对内置函数的修改比較大,加入了很多新的功能:变量声明.表达式,流程控制,函数.数组等.可是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中採用 ...
- 先说IEnumerable,我们每天用的foreach你真的懂它吗?
我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- 浅谈JavaScript中forEach与each
forEach是ES5中操作数组的一种方法,主要功能是遍历数组,例如: var arr = [1,2,3,4]; arr.forEach(alert); 等价于: var arr = [1, 2, 3 ...
- 《ES6基础教程》之 map、forEach、filter indexOf 用法
1,map,对数组的每个元素进行一定操作,返回一个新的数组. var oldArr = [{first_name:"Colin",last_name:"Toh" ...
随机推荐
- LeetCode Construct Binary Tree from String
原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-string/description/ 题目: You need to ...
- git撤销各种状态下的操作
使用Git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作 一,未加入缓存区,撤销文件修改 git checkout -- file 二,已加入缓存区,撤销文件提交 git reset HEAD ...
- 在vue项目中正确的引入jquery和bootstrap
<script>标签引入jquery在vue脚手架里并不适用,需要利用webpack引入jquery 一.第一种方法 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jq ...
- 转:django中session的实现机制
转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请 ...
- egg 使用手记(一)
1. 文件加载规则 引用官方的说法: 框架在加载文件时会进行转换,因为文件命名风格和 API 风格存在差异.我们推荐文件使用下划线,而 API 使用驼峰.比如 app/service/user_inf ...
- datasnap的初步
datasnap的初步-回调函数 服务器端 TServerMethods1 =class(TComponent) private { Private declarations } public { P ...
- laravel 中使用定时任务
Laravel5.3 Artisan Console 文档地址 http://laravelacademy.org/post/6228.html 1.在服务器上查看定时任务有哪些crontab -e ...
- sql server中类似oracle中decode功能的函数
sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...
- c++ 浅谈 new 的使用
实例用法: 创建对象: class U_Ptr smart; U_Ptr* ptr = new U_Ptr(); class U_Ptr smart(new U_Ptr(p)); int *p = n ...
- MySQL-事务的实现-redo
MySQL中事务: 事务的实现: ACID: 原子性(A : Atomicity) 一致性(C : consistency ) 隔离性(I : isolation) 持久性(D : dura ...