Rumah php教程 php手册 Smarty循环实例详解

Smarty循环实例详解

Jun 06, 2016 pm 08:01 PM
php smarty Contoh permohonan kitaran Penjelasan terperinci

在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代码

  1. $suoyin1 = array ( '1000' , '1001' , '1002' );   
  2. $smarty ->assign( 'suoyin1' , $suoyin1 );   

 

XML/HTML代码

  1. {div  name = n1   loop =$suoyin1} >   
  2. id:  {$suoyin1[n1]} >   
  3. {/div} >   


OUTPUT:
id:1000 id:1001 id:1002
2、如果多个数组包含相同数量的元素,可以将他们合并写出,这里说明了loop 只代
表循环次数。

PHP代码

  1. $id = array ( '1000' , '1001' , '1002' );   
  2. $name = array ( 'John Smith' , 'Jack Jones' , 'Jane Munson' );   
  3. $address = array ( '253 N 45th' , '417 Mulberry ln' , '5605 apple st' );   
  4. $smarty ->assign( 'id' , $id );   
  5. $smarty ->assign( 'name' , $name );   
  6. $smarty ->assign( 'address' , $address );  


XML/HTML代码

  1. {div  name = h1   loop =$name} >   
  2. id: {$id[h1]} >   
  3. name: {$name[h1]} >   
  4. address: {$address[h1]} >   
  5. {/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代码

  1. $bst = array ( 'id' => '1000' , 'name' => 'John Smith' , 'address' => '253 N 45th' );   
  2. $smarty ->assign( 'bst' , $bst );  


XML/HTML代码

  1. id: {$bst.id} >   
  2. name: {$bst.name} >   
  3. address: {$bst.address} >   


OUTPUT:
id:1000 name:John Smith address:253 N 45th
4、二维关联数组,用到基本循环。

PHP代码

  1. $erwei = array ( array ( 'id' => '1000' , 'name' => 'John Smith' , 'address' => '253 N 45th' ),   
  2. array ( 'id' => '1001' , 'name' => 'Jack Jones' , 'address' => '417 Mulberry ln' ),   
  3. array ( 'id' => '1002' , 'name' => 'Jane Munson' , 'address' => '5605 apple st' ));   
  4. $smarty ->assign( 'erwei' , $erwei );  


XML/HTML代码

  1. {div  name = h2   loop =$erwei} >   
  2. id: {$erwei[h2].id} >   
  3. name: {$erwei[h2].name} >   
  4. address: {$erwei[h2].address} >   
  5. {/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代码

  1. {div  name = customer   loop =$custid} >   
  2. id:  {$custid[customer]} >   
  3. {divelse} >   
  4. there are no values in $custid.   
  5. {/div} >   


6、div 多层循环

PHP代码

  1. $id  =  array (1001,1002,1003);   
  2. $smarty ->assign( 'custid' , $id );   
  3. $fullnames  =  array ( 'John Smith' , 'Jack Jones' , 'Jane Munson' );   
  4. $smarty ->assign( 'name' , $fullnames );   
  5. $addr  =  array ( '253 N 45th' '417 Mulberry ln' '5605 apple st' );   
  6. $smarty ->assign( 'address' , $addr );   
  7. $types  =  array (   
  8. array 'home phone' 'cell phone' 'e-mail' ),   
  9. array 'home phone' 'web' ),   
  10. array 'cell phone' )   
  11. );   
  12. $smarty ->assign( 'contact_type' $types );   
  13. $info  =  array (   
  14. array ( '555-555-5555' '666-555-5555' 'john@myexample.com' ),   
  15. array '123-456-4' 'www.example.com' ),   
  16. array '0457878' )   
  17. );   
  18. $smarty ->assign( 'contact_info' $info );   

 

XML/HTML代码

  1. {div  name = customer   loop =$custid} >   
  2. id:  {$custid[customer]} >   
  3. name:  {$name[customer]} >   
  4. address:  {$address[customer]} >   
  5. {div  name = contact   loop =$contact_type[customer]} >   
  6. {$contact_type[customer][contact]} > {$contact_info[customer][contact]} >   
  7. {/div} >   
  8. {/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代码

  1. $mu = array ( array ( 'id' => '1000' ,   
  2. 'name' => 'John Smith' ,   
  3. 'address' => '253 N 45th' ,   
  4. 'contact' => array ( 'home' => '555-55-555' , 'bell' => '1111111' )   
  5. ),   
  6. array ( 'id' => '1001' ,   
  7. 'name' => 'Jack Jones' ,   
  8. 'address' => '417 Mulberry ln' ,   
  9. 'contact' => array ( 'home' => '444-44-444' , 'bell' => '2222222' )   
  10. ),   
  11. array ( 'id' => '1002' ,   
  12. 'name' => 'Jane Munson' ,   
  13. 'address' => '5605 apple st' ,   
  14. 'contact' => array ( 'home' => '333-33-333' , 'bell' => '4444444' )   
  15. )   
  16. );   
  17. $smarty ->assign( 'mu' , $mu );   

 

XML/HTML代码

  1. {div  name = sec1   loop =$mu} >   
  2. id: {$mu[sec1].id} >   
  3. name: {$mu[sec1].name} >   
  4. address: {$mu[sec1].address} >   
  5. array: {$mu[sec1].contact} >   
  6. home phone: {$mu[sec1].contact.home} >   
  7. cell phone: {$mu[sec1].contact.bell} >   
  8. ====================================================================   
  9. {/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代码

  1. $forum  =  array ( array ( "category_id"  => 1,   
  2. "category_name"  =>  "公告区" ,   
  3. "topic"  =>  array (   
  4. array ( "topic_id"  => 1,  "topic_name"  =>  "站务公告" )   
  5. )   
  6. ),   
  7. array ( "category_id"  => 2,   
  8. "category_name"  =>  "文学专区" ,   
  9. "topic"  =>  array (   
  10. array ( "topic_id"  => 2,  "topic_name"  =>  "好书介绍" ),   
  11. array ( "topic_id"  => 3,  "topic_name"  =>  "奇文共赏" )   
  12. )   
  13. ),   
  14. array ( "category_id"  => 3,   
  15. "category_name"  =>  "计算机专区" ,   
  16. "topic"  =>  array (   
  17. array ( "topic_id"  => 4,  "topic_name"  =>  "硬件外围" ),   
  18. array ( "topic_id"  => 5,  "topic_name"  =>  "软件讨论" )   
  19. )   
  20. )   
  21. );   
  22. $smarty ->assign( "forum" $forum );   

 

XML/HTML代码

  1. {div  name = sec1   loop =$forum} >   
  2. {$forum[sec1].category_name} >   
  3. {div  name = sec2   loop =$forum[sec1].topic} >   
  4. {$forum[sec1].topic[sec2].topic_name} >   
  5. {/div} >   
  6. {/div} >   


OUTPUT:
公告区
站务公告
文学专区
好书介绍
奇文共赏
计算机专区
硬件外围
软件讨论
9、div 和forech 循环的用法比较

PHP代码

  1. $array2  =  array (   
  2. array ( "index1"  =>  "data1-1" "index2"  =>  "data1-2" "index3"  =>  "data1-3" ),   
  3. array ( "index1"  =>  "data2-1" "index2"  =>  "data2-2" "index3"  =>  "data2-3" ),   
  4. array ( "index1"  =>  "data3-1" "index2"  =>  "data3-2" "index3"  =>  "data3-3" ),   
  5. array ( "index1"  =>  "data4-1" "index2"  =>  "data4-2" "index3"  =>  "data4-3" ),   
  6. array ( "index1"  =>  "data5-1" "index2"  =>  "data5-2" "index3"  =>  "data5-3" )   
  7. );   
  8. $smarty ->assign( "array2" $array2 );   

 

XML/HTML代码

  1. foreach   
  2. {foreach  item = index2   from =$array2} >   
  3. {foreach  key = key2   item = item2   from =$index2} >   
  4. {$key2} > {$item2} >   
  5. {/foreach} >   
  6. {/foreach} >   
  7. div   
  8. {div  name = sec2   loop =$array2} >   
  9. index1:  {$array2[sec2].index1} >   
  10. index2:  {$array2[sec2].index2} >   
  11. index3:  {$array2[sec2].index3} >   
  12. {/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代码

  1. $conn =mysql_connect( 'localhost' , 'root' , 'pass' );   
  2. mysql_select_db( 'dbname' , $conn );   
  3. mysql_query( "SET NAMES 'GBK'" );   
  4. $sql = "SELECT * FROM posts" ;   
  5. $result =mysql_query( $sql );   
  6. $posts =mysql_fetch_array( $result );   
  7. $smarty ->assign( 'posts' , $posts );   

 

XML/HTML代码

  1. {div  name = h   loop =$posts} >   
  2. 标题:  {$posts[h].ptitle} >   
  3. 内容:  {$posts[h].pcontent} >   
  4. 发布时间:  {$posts[h].ptime|date_format:"%Y-%m-%d %H:%M:%S"} >   
  5. {/div} >   


OUTPUT:
标题:标题一内容:内容一发布时间:2008-1-1 10:20:15
标题:标题二内容:内容二发布时间:2008-4-1 8:1:12
表category 文章分类表
cid 文章分类ID
cname 分类名
这里要循环出所有分类,以及分类下的所有帖子,也就是一个嵌套循环。
PHP

PHP代码

  1. $sql = "SELECT * FROM category" ;   
  2. $result =mysql_query( $sql );   
  3. $cat = array ();  //第一层数组   
  4. while ( $array1 =mysql_fetch_array( $result )){  //第一层数据   
  5. $sql2 = "SELECT * FROM posts WHERE cid={$cat[cid]}" ;   
  6. $rs =mysql_query( $sql2 );   
  7. $posts = array ();  //第二层数组   
  8. while ( $array2 =mysql_fetch_array( $rs )){  //第二层数据   
  9. array_push ( $posts , $array2 );  //压入数组posts 中   
  10. }   
  11. $array1 [ 'posts' ]= $posts // 把第二层数组指定为第一层数据中的一个成员   
  12. array_push ( $cat , $array1 );  //把数据放入数组$cat 中   
  13. }   
  14. $smarty ->assign( 'cat' , $cat );   

 

XML/HTML代码

  1. {div  name = sec1   loop =$cat} >   
  2. 分类: {$cat[sec1].cname} >   
  3. {div  name = sec2   loop =$cat[sec1].posts} >   
  4. 标题:  {$cat[sec1].posts[sec2].ptitle} >   
  5. 内容:  {$cat[sec1].posts[sec2].pcontent} >   
  6. 发布时间:  {$cat[sec1].posts[sec2].pcontent|date_format:"%Y-%m-%d %H:%M:%S"} >   
  7. {/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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

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

7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini 7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini Nov 13, 2024 am 09:42 AM

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

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

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

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

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,

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

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

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

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

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

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 Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

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.

See all articles