Home  >  Article  >  Backend Development  >  PHP template engine Smarty built-in function section, sectionelse usage and examples detailed explanation

PHP template engine Smarty built-in function section, sectionelse usage and examples detailed explanation

墨辰丷
墨辰丷Original
2018-06-04 09:23:591235browse

This article mainly introduces the usage of the built-in functions section and sectionelse of the PHP template engine Smarty. It analyzes in detail the techniques and usage of section and sectionelse for loop processing in the form of examples. Friends in need can refer to it

section is another solution for processing loops in Smarty templates besides foreach. Section is more flexible than foreach. It is like an improved foreach statement. In addition to having the same loop characteristics, it also provides many additional options that can be modified. Good control loop execution. In the template, you must use paired section tags. There are two attributes that must be set, name and loop. For the attributes of section, please see the following table:

The name of the looploop[$variable_name]Yesstartstepmaxshow

We use an example to demonstrate the use of {section} and {sectionelse} in Smarty.

Example idea: retrieve the content from the database, assign it to an array variable $_html, assign this array variable to the template, and then traverse the array in the template.

Database, main file index.php, Smarty template initialization file init.inc.php, please refer to the previous article "Analysis of usage of PHP template engine Smarty built-in functions foreach and foreachelse"

/ tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>section,sectionelse</title>
</head>
<body>
 <table align="center" border="1" width="800">
  <tr>
   <th>编号(iteration)</th>
   <th>编号(rownum)</th>
   <th>姓名</th>
   <th>电子邮件</th>
   <th>添加时间</th>
  </tr>
  <{section loop=$data name="ls" max="100" start="0" step="2" }> <!-- 使用 section 遍历数组 $data,max 表示最多可以循环多少条,start 表示从哪个数组下标开始显示,step决定了循环的步长,如果设置为2,那么将遍历下标为0,2,4……的元素 -->
  <!-- 在此,我们做几个保留变量 $smarty.section 的操作 -->
    <!-- 当数据显示第一条的时候,第一行的表格背景为黄色,使用属性:first -->
    <!-- 当数据显示最后一条的时候,最后一行的表格背景为蓝色,使用属性:last -->
  <{if $smarty.section.ls.first}>
  <tr align="center" bgcolor="#FFFF00">
  <{elseif $smarty.section.ls.last}>
  <tr align="center" bgcolor="#0000FF">
  <{else}>
  <tr align="center">
  <{/if}>
   <td><{$smarty.section.ls.iteration}></td> <!-- iteration 是保留变量中显示行号的属性 -->
   <td><{$smarty.section.ls.rownum}></td> <!-- rownum 是保留变量中显示行号的属性 -->
   <td><{$data[ls].username}></td> <!-- 输出数组第二维下标为 username 的元素值 -->
   <td><{$data[ls].email}></td> <!-- 输出数组第二维下标为 email 的元素值 -->
   <td><{$data[ls].addTime}></td> <!-- 输出数组第二维下标为 addTime 的元素值 -->
  </tr>
  <{sectionelse}> <!-- 如果分配过来的数组没有内容的话,显示下面内容 -->
  <tr>
   <td colspan="5">对不起!暂时没有数据。</td>
  </tr>
  <{/section}>
  <{if $data}> <!-- 如果循环的次数不为空的话,那么使用 Smarty 的保留变量 {$smarty.section} 显示出循环的次数 -->
  <tr>
   <td align="center" colspan="5">循环的次数为:<{$smarty.section.ls.total}></td>
  </tr>
  <{/if}>
 </table>
</body>
</html>

Execution result:

section Variables that can be used in the loop area

Attributes Type Is it required Default value Description
name string Yes ##n/a
##n/aDecided to loop Variable name of times
integer No 0 The initial position of loop execution. If the value is a negative number, the starting position is calculated from the end of the array. For example: if there are 7 elements in the array and specify start as -2, then the index pointing to the current array is 5. Illegal values ​​(exceeding the lower limit of the loop array) will be automatically adjusted to the closest legal value.
integer No 1This value determines the step size of the loop. For example, specifying step=2 will only traverse the subscripts 0, 2, 4, etc. elements. If step is a negative value, then traverse the array from back to front.
integer No 1Set the maximum number of executions of the loop.
boolean No trueDetermine whether to display the loop.

Variable name

Description

index Used to display the index of the current loop, starting from 0 (if the start attribute is set, then it starts from this value), and increases by 1 each time (if the step attribute is specified, then it is determined by this value)
index_prev is used to display the previous loop index value. When the loop starts, this value is -1
index_next Used to display the next loop index value. When the loop is executed for the last time, this value is still 1 greater than the current index value (if the step attribute is specified, it is determined by this value)
iteration Used to display the number of loops
first The value of this variable when the current section loop is executed for the first time is true
last The value of this variable is true when the current section loop is executed for the last time
rownum Used to display the number of loops. This attribute is an alias of iteration. They are the same.
loop Used to display the number of times the loop last cycled. Index value, this value can be used inside the loop or after the loop ends.
show is the parameter of section. The value of show is boolean true and false. If set If false, the loop will not be displayed. If the sectionelse clause is specified, whether the clause is displayed also depends on the value
total is used to display the number of loop executions. This attribute can be called not only in the loop, but also after the execution is completed

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's learning .

Related recommendations:

phpUsing the method of counting visits with text, detailed explanation with pictures and text

in PHP Detailed explanation of comparison operations and logical operation examples

phpThe definition and usage examples of similar_text() function in php

The above is the detailed content of PHP template engine Smarty built-in function section, sectionelse usage and examples detailed explanation. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn