Heim > Backend-Entwicklung > PHP-Tutorial > Verwendungscodebeispiele für foreach und foreachelse in Smarty-Vorlagen

Verwendungscodebeispiele für foreach und foreachelse in Smarty-Vorlagen

伊谢尔伦
Freigeben: 2023-03-11 09:02:01
Original
1393 Leute haben es durchsucht

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:

Property Typ Ist es erforderlich Standardwert Beschreibung
from string Ja n/a
属性 类型 是否必须 缺省值 描述
from string Yes n/a 待循环数组的名称
item string Yes n/a 当前处理元素的变量名称
key string No n/a

当前处理元素的键名

name string No n/a 该循环的名称,用于访问该循环
Das zu seinde Array Schleifenname
item string Ja n/a

Variablenname des aktuell verarbeiteten Elements
key string Nein n/a

Schlüsselname des aktuellen verarbeitetes Element

name string Nein n/a Der Name der Schleife, mit der auf die Schleife zugegriffen wird
Wir verwenden ein Beispiel, um die Verwendung von {foreach} und { zu demonstrieren foreachelse} in Smarty .

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');
Nach dem Login kopieren

test.sql (verwendete SQL-Daten)
<?php
 define(&#39;ROOT_PATH&#39;, dirname(FILE)); //设置网站根目录
 require ROOT_PATH.&#39;/libs/Smarty.class.php&#39;; //加载 Smarty 模板引擎
 $_tpl = new Smarty(); //创建一个实例对象
 $_tpl->template_dir = ROOT_PATH.&#39;/tpl/&#39;; //重新指定模板目录
 $_tpl->compile_dir = ROOT_PATH.&#39;./com/&#39;; //重新指定编译目录
 $_tpl->left_delimiter = &#39;<{&#39;; //重新指定左定界符
 $_tpl->right_delimiter = &#39;}>&#39;; //重新指定右定界符
?>
Nach dem Login kopieren

init.inc.php (Vorlageninitialisierungsdatei)
<?php
 require &#39;init.inc.php&#39;; //引入模板初始化文件
 global $_tpl;
 $_mysqli = new mysqli(); //创建一个 mysqli() 对象
 $_mysqli->connect(&#39;localhost&#39;,&#39;root&#39;,&#39;数据库密码&#39;,&#39;数据库名&#39;); //连接数据库,请您自行设置
 $_mysqli->set_charset(&#39;utf8&#39;); //设置编码
 $_result = $_mysqli->query("select username,email,addTime from user order by id asc");
 $_html = array();
 while (!!$_row=$_result->fetch_assoc()) {
  $_html[] = $_row;
 }
 $_tpl->assign(&#39;data&#39;,$_html); //把数组分配到模板中
 $_tpl->display(&#39;index.tpl&#39;); //引入模板
 $_mysqli->close(); //关闭数据库,释放资源
?>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage