section循环
section的运用了解:
1、循环一个简单的一维数组:
Example 7-30. Looping a simple array with {section}
<?php
$data = array(1000,1001,1002);
$smarty->assign('custid',$data);
?>
//customer和下面的foo可以随便命名,作用其实仅仅是一个index下标,用来引用数组中的元素
{section name=customer loop=$custid}
id: {$custid[customer]}<br />
{/section}
<hr />
{section name=foo loop=$custid step=-1}
{$custid[foo]}<br />
{/section}
//输出
id: 1000<br />
id: 1001<br />
id: 1002<br />
<hr />
id: 1002<br />
id: 1001<br />
id: 1000<br />
2、不用assign数组直接在smarty中循环:
Example 7-31. {section} without an assigned array
//特别地设置了start,step属性用来控制循环
//$smarty.section.section的名字.index是一个特殊变量,用来显示当前循环的位置
{section name=foo start=10 loop=20 step=2}
{$smarty.section.foo.index}
{/section}
<hr />
{section name=bar loop=21 max=6 step=-2}
{$smarty.section.bar.index}
{/section}
//输出:
10 12 14 16 18
<hr />
20 18 16 14 12 10
3、section的name的值是随你定的
Example 7-32. Naming a {section}
{section name=anything loop=$myArray}
{$myArray[anything].foo}
{$name[anything]} //这种用法目前还没怎么用过,也不太清楚
{$address[anything].bar} //这种也是
{/section}
4、遍历一个关联数组,嵌套的数组
<?php
$data = array(
array('name' => 'John Smith', 'home' => '555-555-5555',
'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
array('name' => 'Jack Jones', 'home' => '777-555-5555',
'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
array('name' => 'Jane Munson', 'home' => '000-555-5555',
'cell' => '123456', 'email' => 'jane@myexample.com')
);
$smarty->assign('contacts',$data);
?>
//section不用嵌套,因为只有一个数组,数组内部用$contacts[customer]得到
//每个数组,再用.键名来得到键值
{section name=customer loop=$contacts}
<p>
name: {$contacts[customer].name}<br />
home: {$contacts[customer].home}<br />
cell: {$contacts[customer].cell}<br />
e-mail: {$contacts[customer].email}
</p>
{/section}
The above example will output:
<p>
name: John Smith<br />
home: 555-555-5555<br />
cell: 666-555-5555<br />
e-mail: john@myexample.com
</p>
<p>
name: Jack Jones<br />
home phone: 777-555-5555<br />
cell phone: 888-555-5555<br />
e-mail: jack@myexample.com
</p>
<p>
name: Jane Munson<br />
home phone: 000-555-5555<br />
cell phone: 123456<br />
e-mail: jane@myexample.com
</p>
5、从数据库查询记录显示,实际上是显示二维数组,其实同上例一样
<?php
$sql = 'select id, name, home, cell, email from contacts '
."where name like '$foo%' ";
$smarty->assign('contacts', $db->getAll($sql));
?>
//结果:
<table>
<tr><th> </th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
{section name=co loop=$contacts} //第一维
<tr>
<td><a href="view.php?id={$contacts[co].id}">view<a></td> //第二维用.号来引用
<td>{$contacts[co].name}</td>
<td>{$contacts[co].home}</td>
<td>{$contacts[co].cell}</td>
<td>{$contacts[co].email}</td>
<tr>
{sectionelse}
<tr><td colspan="5">No items found</td></tr>
{/section}
</table>
6、嵌套的section
<?php
$id = array(1001,1002,1003);
$smarty->assign('custid',$id);
$fullnames = array('John Smith','Jack Jones','Jane Munson');
$smarty->assign('name',$fullnames);
$addr = array('253 N 45th', '417 Mulberry ln', '5605 apple st');
$smarty->assign('address',$addr);
$types = array(
array( 'home phone', 'cell phone', 'e-mail'),
array( 'home phone', 'web'),
array( 'cell phone')
);
$smarty->assign('contact_type', $types);
$info = array(
array('555-555-5555', '666-555-5555', 'john@myexample.com'),
array( '123-456-4', 'www.example.com'),
array( '0457878')
);
$smarty->assign('contact_info', $info);
?>
{section name=customer loop=$custid}
<hr>
id: {$custid[customer]}<br />
name: {$name[customer]}<br />
address: {$address[customer]}<br />
{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br />
{/section}
{/section}
The above example will output:
<hr>
id: 1000<br />
name: John Smith<br />
address: 253 N 45th<br />
home phone: 555-555-5555<br />
cell phone: 666-555-5555<br />
e-mail: john@myexample.com<br />
<hr>
id: 1001<br />
name: Jack Jones<br />
address: 417 Mulberry ln<br />
home phone: 123-456-4<br />
web: www.example.com<br />
<hr>
id: 1002<br />
name: Jane Munson<br />
address: 5605 apple st<br />
cell phone: 0457878<br />
smarty section 用法
{section 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是否显示
*foreach循环
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.newsID}><br>
新闻内容:<{$newsID.newsTitle}><br><hr>
<{foreachelse}>
对不起,数据库中没有新闻输出!
<{/foreach}>
</body>
</html>
分享到:
相关推荐
在Smarty中,`section`是用于处理数组遍历的关键特性,尤其适用于展示列表或表格数据。本篇文章将深入讲解如何在Smarty模板中使用`section`以及其相关属性和变量。 首先,我们来看一个简单的索引数组的例子: ```...
计算机前端-核心编程. Smarty08foreach循环数组.avi
计算机前端-核心编程. Smarty09foreach常用属性.avi
本学习笔记将详细介绍Smarty的核心概念、安装配置、基本用法以及一些高级特性。 1. Smarty核心概念: - 模板:HTML代码,其中包含特殊的SMARTY标记,用于插入动态数据。 - 配置文件:定义SMARTY的全局设置,如...
这个压缩包包含了Smarty的源码、手册和相关的学习笔记,对于理解和使用Smarty进行PHP开发来说,是非常宝贵的资源。 Smarty源码: Smarty的核心理念是将PHP代码与HTML模板分离,通过模板变量和模板函数来实现数据的...
在Smarty中,处理数组和循环是非常常见的任务,尤其是`foreach`循环。下面我们将深入探讨如何在Smarty中使用`foreach`循环以及如何控制循环次数。 1. **获取数组长度** 在Smarty中,可以通过管道操作符 `|` 配合...
Smarty的foreach标签用于处理数组和对象的循环遍历,可以灵活地控制循环次数以及在循环过程中获取当前的次数、下标、是否是第一次或最后一次循环等信息。 首先,了解如何获取数组长度和判断数组个数是非常重要的。...
这个压缩包"smarty包及学习资料"包含了学习Smarty所需的关键资源。 首先,让我们深入了解Smarty的核心概念。Smarty是一个智能的模板引擎,它允许你使用简单的HTML模板来设计用户界面,同时通过PHP代码处理数据。它...
在这个压缩包中,你找到了韩顺平老师的关于Smarty的学习资料,包括笔记、源码、PPT和手册,这些都是深入理解和掌握Smarty不可或缺的资源。 首先,让我们来详细了解一下Smarty的核心概念和功能: 1. **模板分离**:...
在 Smarty 中,`foreach` 是一个非常重要的控制结构,用于处理数组或列表数据的循环迭代。以下是 `foreach` 在 Smarty 中的详细使用说明: 1. **基本语法**: `foreach` 语句的基本形式是: ```smarty {foreach ...
在本文中,给出了Smarty模板文件temp.htm中的代码示例,以及PHP脚本文件index.php的内容,通过这些代码,我们能够详细学习到如何在Smarty模板中使用foreach函数。例如,在temp.htm模板文件中,使用{foreach $name as...
本篇笔记详细梳理了SMARTY的关键概念、配置方法以及各种功能的使用。 首先,SMARTY的重要特性在于其以变量为中心,通过变量来传递数据。它具有快速解析、一次性模板解析、模板更新后自动重解析、自定义定界符、支持...
本资源包由知名IT教育专家韩顺平老师提供,包含了他在讲解《全面掌握Smarty模板技术》课程时所用的笔记、源代码、PPT以及相关工具,旨在帮助学习者深入理解和运用Smarty。 首先,让我们详细了解一下Smarty的核心...
在Smarty模板中,section标签可以用来遍历数组或对象,类似于PHP中的foreach循环。Section标签有两个必须的属性:name和loop。name属性定义了循环的名称,而loop属性则指定了要遍历的数组或对象。 在本文的实例中,...
- **模板语法**:学习如何在模板文件中使用 {$var} 语法来插入变量,以及如何使用控制结构如 {foreach}、{if} 等。 - **模板继承与布局**:理解如何利用 Smarty 的模板继承和布局功能,实现更高效的页面构建。 - *...
总结来说,这个Smarty_smarty_的压缩包教程,对于想要学习或深入理解Smarty模板引擎的人来说,是一份非常有价值的资源。它不仅介绍了Smarty的基本操作,还涉及到了实际应用中的高级特性,帮助开发者更好地利用Smarty...
这个“最全面的Smarty学习手册”显然包含了关于Smarty的详细知识,包括其基本概念、安装配置、模板语法、变量赋值、控制结构、函数与插件、缓存机制以及实际应用等内容。 1. **Smarty基础** - **模板引擎**:...