[PHP]模板引擎Smarty深入浅出介绍(5)


<?php 
  require "main.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" => "软件讨论") 
  ) 
  ) 
  ); 
  $tpl->assign("forum", $forum); 
  $tpl->display("test3.htm"); 
  ?> 

模版的写法如下:
  
  templates/test3.htm:



  <html> 
  <head> 
  <title>巢状循环测试</title> 
  </head> 
  <body> 
  <table width="200" border="0" align="center" cellpadding="3" cellspacing="0"> 
  <{section name=sec1 loop=$forum}> 
  <tr> 
  <td colspan="2"><{$forum[sec1].category_name}></td> 
  </tr> 
  <{section name=sec2 loop=$forum[sec1].topic}> 
  <tr> 
  <td width="25"> </td> 
  <td width="164"><{$forum[sec1].topic[sec2].topic_name}></td> 
  </tr> 
  <{/section}> 
  <{/section}> 
  </table> 
  </body> 
  </html> 
   

执行的结果就像笔者举的例子一样。
  
  因此呢,在程序中我们只要想办法把所要重复值一层一层的塞到数组中,再利用 <{第一层数组[循环1].第二层数组[循环2].第三层数组[循环3]. ... .数组索引}> 这样的方式来显示每一个巢状循环中的值。至于用什么方法呢?下一节使用数据库时我们再提。
  
  转换数据库中的资料
  
  上面提到如何显示巢状循环,而实际上应用时我们的资料可能是从数据库中抓取出来的,所以我们就得想办法把数据库的资料变成上述的多重数组的形式。这里笔者用一个 DB 类别来抓取数据库中的资料,您可以自行用您喜欢的方法。
  
  我们只修改 PHP 程序,模版还是上面那个 (这就是模版引擎的好处~),其中 $db 这个对象假设已经在 main.php 中建立好了,而且抓出来的资料就是上面的例子。
  
  test3.php:
  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/12482a27b7aeccb8a7834d8fd7f09ea3.html