Smarty循环实例详解
2010-10-27 11:56
387 查看
在Smarty应用,常常会遇到循环问题,在这里做一个详细的说明。首先是参数说明:
loop 属性:
the loop variable only determines the number of times to loop
loop 循环所赋的变量仅决定循环的次数,可以任意!!!
section 属性:
the name of the section can be anything you like,and it is used to reference
the data within the section
section 属性的值可以是任意的,而且在循环中只能使用该名字作为替换
数据,也就是[section]里的值。
下面给出示例来具体说明应用方法(PHP 代表PHP 部分代码,HTML 代表模板
内容,OUTPUT 代表输出内容):
1、一维索引数组循环。
PHP代码
$suoyin1
=
array
(
'1000'
,
'1001'
,
'1002'
);
$smarty
->assign(
'suoyin1'
,
$suoyin1
);
XML/HTML代码
<
{section
name
=
n1
loop
=$suoyin1}
>
id:
<
{$suoyin1[n1]}
>
<
{/section}
>
OUTPUT:
id:1000 id:1001 id:1002
2、如果多个数组包含相同数量的元素,可以将他们合并写出,这里说明了loop 只代
表循环次数。
PHP代码
$id
=
array
(
'1000'
,
'1001'
,
'1002'
);
$name
=
array
(
'John Smith'
,
'Jack Jones'
,
'Jane Munson'
);
$address
=
array
(
'253 N 45th'
,
'417 Mulberry ln'
,
'5605 apple st'
);
$smarty
->assign(
'id'
,
$id
);
$smarty
->assign(
'name'
,
$name
);
$smarty
->assign(
'address'
,
$address
);
XML/HTML代码
<
{section
name
=
h1
loop
=$name}
>
id:
<
{$id[h1]}
>
name:
<
{$name[h1]}
>
address:
<
{$address[h1]}
>
<
{/section}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
id:1001 name:Jack Jones address:417 Mulberry ln
id:1002 name:Jane Munson address:5605 apple st
3、一维关联数组不要循环。
PHP代码
$bst
=
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
);
$smarty
->assign(
'bst'
,
$bst
);
XML/HTML代码
id:
<
{$bst.id}
>
name:
<
{$bst.name}
>
address:
<
{$bst.address}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
4、二维关联数组,用到基本循环。
PHP代码
$erwei
=
array
(
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
),
array
(
'id'
=>
'1001'
,
'name'
=>
'Jack Jones'
,
'address'
=>
'417 Mulberry ln'
),
array
(
'id'
=>
'1002'
,
'name'
=>
'Jane Munson'
,
'address'
=>
'5605 apple st'
));
$smarty
->assign(
'erwei'
,
$erwei
);
XML/HTML代码
<
{section
name
=
h2
loop
=$erwei}
>
id:
<
{$erwei[h2].id}
>
name:
<
{$erwei[h2].name}
>
address:
<
{$erwei[h2].address}
>
<
{/section}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
id:1001 name:Jack Jones address:417 Mulberry ln
id:1002 name:Jane Munson address:5605 apple st
5、sectionelse 控制当没变量的时候显示,比如你打开的文章(产品)不存在或已删
除!
XML/HTML代码
<
{section
name
=
customer
loop
=$custid}
>
id:
<
{$custid[customer]}
>
<
{sectionelse}
>
there are no values in $custid.
<
{/section}
>
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
);
XML/HTML代码
<
{section
name
=
customer
loop
=$custid}
>
id:
<
{$custid[customer]}
>
name:
<
{$name[customer]}
>
address:
<
{$address[customer]}
>
<
{section
name
=
contact
loop
=$contact_type[customer]}
>
<
{$contact_type[customer][contact]}
>
:
<
{$contact_info[customer][contact]}
>
<
{/section}
>
<
{/section}
>
OUTPUT:
id: 1001
name: John Smith
address: 253 N 45th
home phone: 555-555-5555
cell phone: 666-555-5555
e-mail:5656@126.com
id: 1002
name: 232
address: 417 Mulberry ln
home phone: 123-456-4
web:www.example.com
3
id: 1003
name: Jane Munson
address: 5605 apple st
cell phone: 0457878
7、多层嵌套循环:这里联系方式还嵌套了一个一维数组,有cell phone、home phone
和email。注意嵌套的一维数组不要循环!!内嵌套写法$mu[sec1].contact.home。
PHP代码
$mu
=
array
(
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
,
'contact'
=>
array
(
'home'
=>
'555-55-555'
,
'bell'
=>
'1111111'
)
),
array
(
'id'
=>
'1001'
,
'name'
=>
'Jack Jones'
,
'address'
=>
'417 Mulberry ln'
,
'contact'
=>
array
(
'home'
=>
'444-44-444'
,
'bell'
=>
'2222222'
)
),
array
(
'id'
=>
'1002'
,
'name'
=>
'Jane Munson'
,
'address'
=>
'5605 apple st'
,
'contact'
=>
array
(
'home'
=>
'333-33-333'
,
'bell'
=>
'4444444'
)
)
);
$smarty
->assign(
'mu'
,
$mu
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$mu}
>
id:
<
{$mu[sec1].id}
>
name:
<
{$mu[sec1].name}
>
address:
<
{$mu[sec1].address}
>
array:
<
{$mu[sec1].contact}
>
home phone:
<
{$mu[sec1].contact.home}
>
cell phone:
<
{$mu[sec1].contact.bell}
>
====================================================================
<
{/section}
>
OUTPUT:
id:1000
name: John Smith
address:253 N 45th
array:Array
home phone:555-55-555
cell phone:1111111 =================================================id:1001
name:Jack Jones
address:417 Mulberry ln
array:Array
home phone:444-44-444
cell phone:2222222 ================================================id:1002
name:Jane Munson
address:5605 apple st
array:Array
home phone:333-33-333
cell phone:4444444
8 、多层嵌套循环。内部嵌套二维数组, 加个循环!! 内嵌套写法
$forum[sec1].topic[sec2].topic_name。
PHP代码
$forum
=
array
(
array
(
"category_id"
=> 1,
"category_name"
=>
"公告区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 1,
"topic_name"
=>
"站务公告"
)
)
),
array
(
"category_id"
=> 2,
"category_name"
=>
"文学专区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 2,
"topic_name"
=>
"好书介绍"
),
array
(
"topic_id"
=> 3,
"topic_name"
=>
"奇文共赏"
)
)
),
array
(
"category_id"
=> 3,
"category_name"
=>
"计算机专区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 4,
"topic_name"
=>
"硬件外围"
),
array
(
"topic_id"
=> 5,
"topic_name"
=>
"软件讨论"
)
)
)
);
$smarty
->assign(
"forum"
,
$forum
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$forum}
>
<
{$forum[sec1].category_name}
>
<
{section
name
=
sec2
loop
=$forum[sec1].topic}
>
<
{$forum[sec1].topic[sec2].topic_name}
>
<
{/section}
>
<
{/section}
>
OUTPUT:
公告区
站务公告
文学专区
好书介绍
奇文共赏
计算机专区
硬件外围
软件讨论
9、section 和forech 循环的用法比较
PHP代码
$array2
=
array
(
array
(
"index1"
=>
"data1-1"
,
"index2"
=>
"data1-2"
,
"index3"
=>
"data1-3"
),
array
(
"index1"
=>
"data2-1"
,
"index2"
=>
"data2-2"
,
"index3"
=>
"data2-3"
),
array
(
"index1"
=>
"data3-1"
,
"index2"
=>
"data3-2"
,
"index3"
=>
"data3-3"
),
array
(
"index1"
=>
"data4-1"
,
"index2"
=>
"data4-2"
,
"index3"
=>
"data4-3"
),
array
(
"index1"
=>
"data5-1"
,
"index2"
=>
"data5-2"
,
"index3"
=>
"data5-3"
)
);
$smarty
->assign(
"array2"
,
$array2
);
XML/HTML代码
foreach
<
{foreach
item
=
index2
from
=$array2}
>
<
{foreach
key
=
key2
item
=
item2
from
=$index2}
>
<
{$key2}
>
:
<
{$item2}
>
<
{/foreach}
>
<
{/foreach}
>
section
<
{section
name
=
sec2
loop
=$array2}
>
index1:
<
{$array2[sec2].index1}
>
index2:
<
{$array2[sec2].index2}
>
index3:
<
{$array2[sec2].index3}
>
<
{/section}
>
OUTPUT:
index1: data1-1 index2: data1-2 index3: data1-3 index1: data2-1 index2: data2-2 index3: data2-3
index1: data3-1 index2: data3-2 index3: data3-3 index1: data4-1 index2: data4-2 index3: data4-3
index1: data5-1 index2: data5-2 index3: data5-3
10、显示数据库的资料
表posts 文章列表
字段
pid INT(10) AUTO_INCREMENT 文章ID
cid INT(10) 分类ID
ptitle varchar(100) 文章标题
pcontent text 文章内容
ptime INT(11) 文章发表日期
和简单关联二维数组一样。
PHP代码
$conn
=mysql_connect(
'localhost'
,
'root'
,
'pass'
);
mysql_select_db(
'dbname'
,
$conn
);
mysql_query(
"SET NAMES 'GBK'"
);
$sql
=
"SELECT * FROM posts"
;
$result
=mysql_query(
$sql
);
$posts
=mysql_fetch_array(
$result
);
$smarty
->assign(
'posts'
,
$posts
);
XML/HTML代码
<
{section
name
=
h
loop
=$posts}
>
标题:
<
{$posts[h].ptitle}
>
内容:
<
{$posts[h].pcontent}
>
发布时间:
<
{$posts[h].ptime|date_format:"%Y-%m-%d %H:%M:%S"}
>
<
{/section}
>
OUTPUT:
标题:标题一内容:内容一发布时间:2008-1-1 10:20:15
标题:标题二内容:内容二发布时间:2008-4-1 8:1:12
表category 文章分类表
cid 文章分类ID
cname 分类名
这里要循环出所有分类,以及分类下的所有帖子,也就是一个嵌套循环。
PHP
PHP代码
$sql
=
"SELECT * FROM category"
;
$result
=mysql_query(
$sql
);
$cat
=
array
();
//第一层数组
while
(
$array1
=mysql_fetch_array(
$result
)){
//第一层数据
$sql2
=
"SELECT * FROM posts WHERE cid={$cat[cid]}"
;
$rs
=mysql_query(
$sql2
);
$posts
=
array
();
//第二层数组
while
(
$array2
=mysql_fetch_array(
$rs
)){
//第二层数据
array_push
(
$posts
,
$array2
);
//压入数组posts 中
}
$array1
[
'posts'
]=
$posts
;
// 把第二层数组指定为第一层数据中的一个成员
array_push
(
$cat
,
$array1
);
//把数据放入数组$cat 中
}
$smarty
->assign(
'cat'
,
$cat
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$cat}
>
分类:
<
{$cat[sec1].cname}
>
<
{section
name
=
sec2
loop
=$cat[sec1].posts}
>
标题:
<
{$cat[sec1].posts[sec2].ptitle}
>
内容:
<
{$cat[sec1].posts[sec2].pcontent}
>
发布时间:
<
{$cat[sec1].posts[sec2].pcontent|date_format:"%Y-%m-%d %H:%M:%S"}
>
<
{/section}
>
OUTPUT:
分类:分类1
标题:标题一内容:内容一发布时间:2008-1-1 10:20:15
标题:标题二内容:内容二发布时间:2008-4-1 8:1:12
分类:分类2
标题:标题三内容:内容三发布时间:2008-1-1 10:20:15
标题:标题四内容:内容四发布时间:2008-4-1 8:1:12
loop 属性:
the loop variable only determines the number of times to loop
loop 循环所赋的变量仅决定循环的次数,可以任意!!!
section 属性:
the name of the section can be anything you like,and it is used to reference
the data within the section
section 属性的值可以是任意的,而且在循环中只能使用该名字作为替换
数据,也就是[section]里的值。
下面给出示例来具体说明应用方法(PHP 代表PHP 部分代码,HTML 代表模板
内容,OUTPUT 代表输出内容):
1、一维索引数组循环。
PHP代码
$suoyin1
=
array
(
'1000'
,
'1001'
,
'1002'
);
$smarty
->assign(
'suoyin1'
,
$suoyin1
);
XML/HTML代码
<
{section
name
=
n1
loop
=$suoyin1}
>
id:
<
{$suoyin1[n1]}
>
<
{/section}
>
OUTPUT:
id:1000 id:1001 id:1002
2、如果多个数组包含相同数量的元素,可以将他们合并写出,这里说明了loop 只代
表循环次数。
PHP代码
$id
=
array
(
'1000'
,
'1001'
,
'1002'
);
$name
=
array
(
'John Smith'
,
'Jack Jones'
,
'Jane Munson'
);
$address
=
array
(
'253 N 45th'
,
'417 Mulberry ln'
,
'5605 apple st'
);
$smarty
->assign(
'id'
,
$id
);
$smarty
->assign(
'name'
,
$name
);
$smarty
->assign(
'address'
,
$address
);
XML/HTML代码
<
{section
name
=
h1
loop
=$name}
>
id:
<
{$id[h1]}
>
name:
<
{$name[h1]}
>
address:
<
{$address[h1]}
>
<
{/section}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
id:1001 name:Jack Jones address:417 Mulberry ln
id:1002 name:Jane Munson address:5605 apple st
3、一维关联数组不要循环。
PHP代码
$bst
=
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
);
$smarty
->assign(
'bst'
,
$bst
);
XML/HTML代码
id:
<
{$bst.id}
>
name:
<
{$bst.name}
>
address:
<
{$bst.address}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
4、二维关联数组,用到基本循环。
PHP代码
$erwei
=
array
(
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
),
array
(
'id'
=>
'1001'
,
'name'
=>
'Jack Jones'
,
'address'
=>
'417 Mulberry ln'
),
array
(
'id'
=>
'1002'
,
'name'
=>
'Jane Munson'
,
'address'
=>
'5605 apple st'
));
$smarty
->assign(
'erwei'
,
$erwei
);
XML/HTML代码
<
{section
name
=
h2
loop
=$erwei}
>
id:
<
{$erwei[h2].id}
>
name:
<
{$erwei[h2].name}
>
address:
<
{$erwei[h2].address}
>
<
{/section}
>
OUTPUT:
id:1000 name:John Smith address:253 N 45th
id:1001 name:Jack Jones address:417 Mulberry ln
id:1002 name:Jane Munson address:5605 apple st
5、sectionelse 控制当没变量的时候显示,比如你打开的文章(产品)不存在或已删
除!
XML/HTML代码
<
{section
name
=
customer
loop
=$custid}
>
id:
<
{$custid[customer]}
>
<
{sectionelse}
>
there are no values in $custid.
<
{/section}
>
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
);
XML/HTML代码
<
{section
name
=
customer
loop
=$custid}
>
id:
<
{$custid[customer]}
>
name:
<
{$name[customer]}
>
address:
<
{$address[customer]}
>
<
{section
name
=
contact
loop
=$contact_type[customer]}
>
<
{$contact_type[customer][contact]}
>
:
<
{$contact_info[customer][contact]}
>
<
{/section}
>
<
{/section}
>
OUTPUT:
id: 1001
name: John Smith
address: 253 N 45th
home phone: 555-555-5555
cell phone: 666-555-5555
e-mail:5656@126.com
id: 1002
name: 232
address: 417 Mulberry ln
home phone: 123-456-4
web:www.example.com
3
id: 1003
name: Jane Munson
address: 5605 apple st
cell phone: 0457878
7、多层嵌套循环:这里联系方式还嵌套了一个一维数组,有cell phone、home phone
和email。注意嵌套的一维数组不要循环!!内嵌套写法$mu[sec1].contact.home。
PHP代码
$mu
=
array
(
array
(
'id'
=>
'1000'
,
'name'
=>
'John Smith'
,
'address'
=>
'253 N 45th'
,
'contact'
=>
array
(
'home'
=>
'555-55-555'
,
'bell'
=>
'1111111'
)
),
array
(
'id'
=>
'1001'
,
'name'
=>
'Jack Jones'
,
'address'
=>
'417 Mulberry ln'
,
'contact'
=>
array
(
'home'
=>
'444-44-444'
,
'bell'
=>
'2222222'
)
),
array
(
'id'
=>
'1002'
,
'name'
=>
'Jane Munson'
,
'address'
=>
'5605 apple st'
,
'contact'
=>
array
(
'home'
=>
'333-33-333'
,
'bell'
=>
'4444444'
)
)
);
$smarty
->assign(
'mu'
,
$mu
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$mu}
>
id:
<
{$mu[sec1].id}
>
name:
<
{$mu[sec1].name}
>
address:
<
{$mu[sec1].address}
>
array:
<
{$mu[sec1].contact}
>
home phone:
<
{$mu[sec1].contact.home}
>
cell phone:
<
{$mu[sec1].contact.bell}
>
====================================================================
<
{/section}
>
OUTPUT:
id:1000
name: John Smith
address:253 N 45th
array:Array
home phone:555-55-555
cell phone:1111111 =================================================id:1001
name:Jack Jones
address:417 Mulberry ln
array:Array
home phone:444-44-444
cell phone:2222222 ================================================id:1002
name:Jane Munson
address:5605 apple st
array:Array
home phone:333-33-333
cell phone:4444444
8 、多层嵌套循环。内部嵌套二维数组, 加个循环!! 内嵌套写法
$forum[sec1].topic[sec2].topic_name。
PHP代码
$forum
=
array
(
array
(
"category_id"
=> 1,
"category_name"
=>
"公告区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 1,
"topic_name"
=>
"站务公告"
)
)
),
array
(
"category_id"
=> 2,
"category_name"
=>
"文学专区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 2,
"topic_name"
=>
"好书介绍"
),
array
(
"topic_id"
=> 3,
"topic_name"
=>
"奇文共赏"
)
)
),
array
(
"category_id"
=> 3,
"category_name"
=>
"计算机专区"
,
"topic"
=>
array
(
array
(
"topic_id"
=> 4,
"topic_name"
=>
"硬件外围"
),
array
(
"topic_id"
=> 5,
"topic_name"
=>
"软件讨论"
)
)
)
);
$smarty
->assign(
"forum"
,
$forum
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$forum}
>
<
{$forum[sec1].category_name}
>
<
{section
name
=
sec2
loop
=$forum[sec1].topic}
>
<
{$forum[sec1].topic[sec2].topic_name}
>
<
{/section}
>
<
{/section}
>
OUTPUT:
公告区
站务公告
文学专区
好书介绍
奇文共赏
计算机专区
硬件外围
软件讨论
9、section 和forech 循环的用法比较
PHP代码
$array2
=
array
(
array
(
"index1"
=>
"data1-1"
,
"index2"
=>
"data1-2"
,
"index3"
=>
"data1-3"
),
array
(
"index1"
=>
"data2-1"
,
"index2"
=>
"data2-2"
,
"index3"
=>
"data2-3"
),
array
(
"index1"
=>
"data3-1"
,
"index2"
=>
"data3-2"
,
"index3"
=>
"data3-3"
),
array
(
"index1"
=>
"data4-1"
,
"index2"
=>
"data4-2"
,
"index3"
=>
"data4-3"
),
array
(
"index1"
=>
"data5-1"
,
"index2"
=>
"data5-2"
,
"index3"
=>
"data5-3"
)
);
$smarty
->assign(
"array2"
,
$array2
);
XML/HTML代码
foreach
<
{foreach
item
=
index2
from
=$array2}
>
<
{foreach
key
=
key2
item
=
item2
from
=$index2}
>
<
{$key2}
>
:
<
{$item2}
>
<
{/foreach}
>
<
{/foreach}
>
section
<
{section
name
=
sec2
loop
=$array2}
>
index1:
<
{$array2[sec2].index1}
>
index2:
<
{$array2[sec2].index2}
>
index3:
<
{$array2[sec2].index3}
>
<
{/section}
>
OUTPUT:
index1: data1-1 index2: data1-2 index3: data1-3 index1: data2-1 index2: data2-2 index3: data2-3
index1: data3-1 index2: data3-2 index3: data3-3 index1: data4-1 index2: data4-2 index3: data4-3
index1: data5-1 index2: data5-2 index3: data5-3
10、显示数据库的资料
表posts 文章列表
字段
pid INT(10) AUTO_INCREMENT 文章ID
cid INT(10) 分类ID
ptitle varchar(100) 文章标题
pcontent text 文章内容
ptime INT(11) 文章发表日期
和简单关联二维数组一样。
PHP代码
$conn
=mysql_connect(
'localhost'
,
'root'
,
'pass'
);
mysql_select_db(
'dbname'
,
$conn
);
mysql_query(
"SET NAMES 'GBK'"
);
$sql
=
"SELECT * FROM posts"
;
$result
=mysql_query(
$sql
);
$posts
=mysql_fetch_array(
$result
);
$smarty
->assign(
'posts'
,
$posts
);
XML/HTML代码
<
{section
name
=
h
loop
=$posts}
>
标题:
<
{$posts[h].ptitle}
>
内容:
<
{$posts[h].pcontent}
>
发布时间:
<
{$posts[h].ptime|date_format:"%Y-%m-%d %H:%M:%S"}
>
<
{/section}
>
OUTPUT:
标题:标题一内容:内容一发布时间:2008-1-1 10:20:15
标题:标题二内容:内容二发布时间:2008-4-1 8:1:12
表category 文章分类表
cid 文章分类ID
cname 分类名
这里要循环出所有分类,以及分类下的所有帖子,也就是一个嵌套循环。
PHP
PHP代码
$sql
=
"SELECT * FROM category"
;
$result
=mysql_query(
$sql
);
$cat
=
array
();
//第一层数组
while
(
$array1
=mysql_fetch_array(
$result
)){
//第一层数据
$sql2
=
"SELECT * FROM posts WHERE cid={$cat[cid]}"
;
$rs
=mysql_query(
$sql2
);
$posts
=
array
();
//第二层数组
while
(
$array2
=mysql_fetch_array(
$rs
)){
//第二层数据
array_push
(
$posts
,
$array2
);
//压入数组posts 中
}
$array1
[
'posts'
]=
$posts
;
// 把第二层数组指定为第一层数据中的一个成员
array_push
(
$cat
,
$array1
);
//把数据放入数组$cat 中
}
$smarty
->assign(
'cat'
,
$cat
);
XML/HTML代码
<
{section
name
=
sec1
loop
=$cat}
>
分类:
<
{$cat[sec1].cname}
>
<
{section
name
=
sec2
loop
=$cat[sec1].posts}
>
标题:
<
{$cat[sec1].posts[sec2].ptitle}
>
内容:
<
{$cat[sec1].posts[sec2].pcontent}
>
发布时间:
<
{$cat[sec1].posts[sec2].pcontent|date_format:"%Y-%m-%d %H:%M:%S"}
>
<
{/section}
>
OUTPUT:
分类:分类1
标题:标题一内容:内容一发布时间:2008-1-1 10:20:15
标题:标题二内容:内容二发布时间:2008-4-1 8:1:12
分类:分类2
标题:标题三内容:内容三发布时间:2008-1-1 10:20:15
标题:标题四内容:内容四发布时间:2008-4-1 8:1:12
相关文章推荐
- smarty循环foreach,section实例详解
- smarty循环foreach,section实例详解
- Smarty foreach控制循环次数的实现详解
- iOS实现自动循环播放的banner实例详解
- Python中分支语句与循环语句实例详解
- C# foreach循环实例详解
- C语言单循环链表的表示与实现实例详解
- Shell 脚本之循环语句(for,while,until)以及case,select,break,continue实例详解
- SQL Server 树形表非循环递归查询的实例详解
- smarty手册-smarty中foreach循环语句详解
- Linux shell数组循环的实例详解
- Zend Framework+smarty用法实例详解
- IOS 避免self循环引用的方法的实例详解
- PHP foreach循环使用详解与实例代码
- smarty手册-smarty中foreach循环语句详解
- 如何在js代码中消灭for循环实例详解
- C#中while循环语句用法实例详解
- Android ViewPager循环播放广告实例详解
- python开发之for循环操作实例详解