Heim > Artikel > Backend-Entwicklung > Verwendungscodebeispiele für foreach und foreachelse in Smarty-Vorlagen
Führt hauptsächlich in die Verwendung der PHPTemplate-Engine einIntelligente integrierte Funktionen foreach und foreachelse und analysiert die Funktionen und spezifischen Verwendungstechniken von foreach und foreachelse in Form von Beispielen Die Details sind wie folgt:
In Smarty-Vorlagen können Sie foreach verwenden, um einen Block zu wiederholen. In der Vorlage muss ein Array von PHP zugewiesen werden. Dieses Array kann ein mehrdimensionales Array sein. Das {foreach}-Tag in Smarty ist das gleiche wie foreach in PHP, mit der Ausnahme, dass eines davon in der Vorlagendatei und das andere im PHP-Skript verwendet wird. Daher wird die Syntax unterschiedlich sein. Ihre Funktion ist jedoch dieselbe, das heißt, durchläuft den Inhalt des Arrays . Es gibt auch ein {foreachelse}-Tag gegenüber dem {foreachelse}-Tag. Die Funktion des {foreachelse}-Tags ist: Wenn das Array leer ist, wird der Inhalt im Tag ausgeführt. {foreach} und {/foreach} müssen paarweise in der Vorlage erscheinen. Sie verfügt über vier Parameter, von denen zwei Parameter from und item erforderlich sind. Die Parameter finden Sie in der folgenden Liste:
Beispielidee: Rufen Sie den Inhalt aus der Datenbank ab, weisen Sie ihn einer Array-Variablen $_html zu, weisen Sie diese Array-Variable der Vorlage zu und durchlaufen Sie dann das
Array in der Vorlage-- -- 表的结构 `user` -- CREATE TABLE IF NOT EXISTS `user` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, `addTime` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; -- -- 转存表中的数据 `user` -- INSERT INTO `user` (`id`, `username`, `email`, `addTime`) VALUES (1, '苍井空', 'canjingkong@sina.com.cn', '2011-10-24 00:00:00'), (2, '樱木花道', 'ymhd@163.com', '2011-10-24 00:00:00'), (3, '赤木晴子', 'chimiqingzi@yahoo.com,cn', '2011-10-24 00:00:00'), (4, '流川枫', 'lcfeng@sina.com', '0000-00-00 00:00:00'), (5, '蜡笔小新', 'labixiaoxin@sina.com', '2011-10-24 00:00:00'), (6, '金刚葫芦娃', 'jghlw@sina.com', '2011-10-24 00:00:00');
test.sql (verwendete SQL-Daten)
<?php define('ROOT_PATH', dirname(FILE)); //设置网站根目录 require ROOT_PATH.'/libs/Smarty.class.php'; //加载 Smarty 模板引擎 $_tpl = new Smarty(); //创建一个实例对象 $_tpl->template_dir = ROOT_PATH.'/tpl/'; //重新指定模板目录 $_tpl->compile_dir = ROOT_PATH.'./com/'; //重新指定编译目录 $_tpl->left_delimiter = '<{'; //重新指定左定界符 $_tpl->right_delimiter = '}>'; //重新指定右定界符 ?>init.inc.php (Vorlageninitialisierungsdatei)
<?php require 'init.inc.php'; //引入模板初始化文件 global $_tpl; $_mysqli = new mysqli(); //创建一个 mysqli() 对象 $_mysqli->connect('localhost','root','数据库密码','数据库名'); //连接数据库,请您自行设置 $_mysqli->set_charset('utf8'); //设置编码 $_result = $_mysqli->query("select username,email,addTime from user order by id asc"); $_html = array(); while (!!$_row=$_result->fetch_assoc()) { $_html[] = $_row; } $_tpl->assign('data',$_html); //把数组分配到模板中 $_tpl->display('index.tpl'); //引入模板 $_mysqli->close(); //关闭数据库,释放资源 ?>index.php (Hauptdatei)
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>foreach,foreachelse</title> </head> <body> <table align="center" border="1" width="800"> <{foreach from=$data item="row" name="ls"}> <!-- 这个foreach 循环分配过来的数组有几行数据 --> <!-- 在此,我们做几个保留变量 $smarty.foreach 的操作 --> <!-- 当数据显示第一条的时候,第一行的表格背景为黄色,使用属性:first --> <!-- 当数据显示最后一条的时候,最后一行的表格背景为蓝色,使用属性:last --> <!-- 显示下分配过来的数组的总个数,使用属性:total --> <{if $smarty.foreach.ls.first}> <tr bgcolor="#FFFF00"> <!-- 第一行背景为黄色 --> <{elseif $smarty.foreach.ls.last}> <tr bgcolor="#0000FF"> <!-- 最后一行背景为蓝色 --> <{else}> <tr> <{/if}> <td><{$smarty.foreach.ls.iteration}></td><!-- 注意:这里是保留变量 $smarty.foreach 的使用,iteration:总是从 1 开始,每执行一次增加 1 --> <{foreach from=$row item="col" name="lsin"}> <!-- 这个foreach 循环数组内的内容,显示在表格的<td></td>标签里 --> <td><{$col}></td> <{/foreach}> </tr> <{foreachelse}> <!-- 如果分配过来的数组中没有数据,那么就执行下面的操作! --> <tr> <td>对不起!暂时没有数据。</td> </tr> <{/foreach}> <tr> <td colspan="4" align="center">分配数组的总记录数为:<{$smarty.foreach.ls.total}>条</td> </tr> </table> </body> </html>tpl/index.tpl (Vorlagendatei der Hauptdatei index.php)Ausführungsergebnisse: Finally To Zusammenfassend ist das in der Hauptdatei index.php übergebene Array $_html ein zweidimensionales Array . Die Verwendung der reservierten Variablen $smarty.foreach basiert auf dem Namensattribut im Tag {foreach}. Die verwendeten reservierten Variablenattribute sind: first (erster Datensatz), last (letzter Datensatz), Iteration (beginnt immer bei 1, jede Ausführung). erhöht sich um 1), insgesamt (wird zur Anzeige der Anzahl der Schleifenausführungen verwendet)
Das obige ist der detaillierte Inhalt vonVerwendungscodebeispiele für foreach und foreachelse in Smarty-Vorlagen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!