Smarty循环实例详解
在Smarty应用,常常会遇到循环问题,在这里做一个详细的说明。首先是参数说明: loop 属性: the loop variable only determines the number of times to loop loop 循环所赋的变量仅决定循环的次数,可以任意!!! div 属性: the name of the div can be
在Smarty应用,常常会遇到循环问题,在这里做一个详细的说明。首先是参数说明:
loop 属性:
the loop variable only determines the number of times to loop
loop 循环所赋的变量仅决定循环的次数,可以任意!!!
div 属性:
the name of the div can be anything you like,and it is used to reference
the data within the div
div 属性的值可以是任意的,而且在循环中只能使用该名字作为替换
数据,也就是[div]里的值。
下面给出示例来具体说明应用方法(PHP 代表PHP 部分代码,HTML 代表模板
内容,OUTPUT 代表输出内容):
1、一维索引数组循环。
PHP代码
- $suoyin1 = array ( '1000' , '1001' , '1002' );
- $smarty ->assign( 'suoyin1' , $suoyin1 );
XML/HTML代码
- {div name = n1 loop =$suoyin1} >
- id: {$suoyin1[n1]} >
- {/div} >
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代码
- {div name = h1 loop =$name} >
- id: {$id[h1]} >
- name: {$name[h1]} >
- address: {$address[h1]} >
- {/div} >
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代码
- {div name = h2 loop =$erwei} >
- id: {$erwei[h2].id} >
- name: {$erwei[h2].name} >
- address: {$erwei[h2].address} >
- {/div} >
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、divelse 控制当没变量的时候显示,比如你打开的文章(产品)不存在或已删
除!
XML/HTML代码
- {div name = customer loop =$custid} >
- id: {$custid[customer]} >
- {divelse} >
- there are no values in $custid.
- {/div} >
6、div 多层循环
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代码
- {div name = customer loop =$custid} >
- id: {$custid[customer]} >
- name: {$name[customer]} >
- address: {$address[customer]} >
- {div name = contact loop =$contact_type[customer]} >
- {$contact_type[customer][contact]} > : {$contact_info[customer][contact]} >
- {/div} >
- {/div} >
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代码
- {div 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} >
- ====================================================================
- {/div} >
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代码
- {div name = sec1 loop =$forum} >
- {$forum[sec1].category_name} >
- {div name = sec2 loop =$forum[sec1].topic} >
- {$forum[sec1].topic[sec2].topic_name} >
- {/div} >
- {/div} >
OUTPUT:
公告区
站务公告
文学专区
好书介绍
奇文共赏
计算机专区
硬件外围
软件讨论
9、div 和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} >
- div
- {div name = sec2 loop =$array2} >
- index1: {$array2[sec2].index1} >
- index2: {$array2[sec2].index2} >
- index3: {$array2[sec2].index3} >
- {/div} >
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代码
- {div name = h loop =$posts} >
- 标题: {$posts[h].ptitle} >
- 内容: {$posts[h].pcontent} >
- 发布时间: {$posts[h].ptime|date_format:"%Y-%m-%d %H:%M:%S"} >
- {/div} >
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代码
- {div name = sec1 loop =$cat} >
- 分类: {$cat[sec1].cname} >
- {div 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"} >
- {/div} >
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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
