Thinkphp内置标签 – 条件判断if标签

if 条件判断语句是很常用的语句,在Thinkphp模板中应该如何使用if判断呢?

与php原生的相似,只是形式不同。

<if condition=”条件判断”>…</if>

<if condition =”条件判断”>…<else />…</if>

<if condition=”条件判断”>…<elseif condition=””>…<else>…</if>

以下是示例:

<if condition="$num eq 5">
	num值等于5
</if>

<if condition="($num lt 0) OR ($num gt 10)">
	num值小于0或大于10
<elseif condition="$num eq 5" />
	num值等于5
<else />
	num值在0到10之间但不等于5
</if>

注意:condition条件中 判断大于 等于 小于 用 gt eq lt egt elt 不要用 > <等,其中唯有等于可以用 ==

如果表示两个条件,用 (条件1) OR (条件2) 形式。

 

Thinkphp内置标签 – 范围比较标签in notin between notbetween rang

在Thinkphp模板中可以使用范围比较标签 in notin between notbetween rang

in 表示name值在value范围内,其中value的值可以从控制器传过来变量

notin 表示不在范围内

between 表示name值在value值之间

notbetween 表示不在其之间

rang 可以用来表示以上四种范围标签,在type中定义即可。

另外注意:所有范围标签都可以用 <else />标签表示不成立的输出。

<in name="num" value="$arr">
	变量num在这个范围内
</in>
<notin name="num" value="1,2,3">
	变量num不在范围内
</notin>
<between name="num" value="1,7">
	变量num在1到7之间
</between>
<notbetween name="num" value="1,7">
	变量num不在1到7之间
<eles />
	变量num在1到7之间
</notbetween>
<rang name="num" value="1,7" type="in">
	变量num在1到7之间
</rang>

 

Thinkphp内置标签 – 模板使用条件语句switch、比较标签eq lt gt、三元运算符

在Thinkphp模板中使用多条件分支语句switch、比较标签eq lt gt elt egt

switch标签

<switch name="num">		
	<case value="1">周一</case>
	<case value="2">周二</case>
	<case value="3" break="1">周三</case>
	<case value="4">周四</case>
	<case value="5">周五</case>
	<default />放假
</switch>

这里需要注意:

name=”num” 中的num是控制器分配过来的数据,switch根据num的数字匹配分支。

每个case分支默认都是带有参数 break=”1″,如果不想break 可以设置break=”0″。

默认用<default />显示默认值。

比较标签 eq lt gt elt egt

比较标签的统一格式: <比较标签 name=”num” value=”5″> 比较成立! </比较标签>

<eq name="number" value="5">
	值相等
</eq>

<lt name="number" value="2">
	变量小于2
<else />
	变量大于等于2
</lt>

这里要注意:

1.可以使用的比较标签有 eq 等于、lt 小于、gt 大于、elt 小于等于、egt 大于等于。

2.所有比较标签都可以使用 <else />标签判断条件不成立输出内容。

三元运算符

{$num < 10 ? 值小于10 : 值大于等于10}

三元运算符是很常用的标签,在执行效率上比if更高效。

Thinkphp内置标签 – 循环标签For

在模板中使用 for 标签循环,跟php的for标签类似。

1.最简单的for循环

<for start="0" end="10">
	{$i}
</for>

这里会输出 0到9的数字。注意:$i 是默认变量的名字

上面的循环相当于php的for循环

<?php
for($i=0; $i<10; $i++){
  echo $i;
}

如果倒序循环或者更换输出的循环变量,可以按照下面的方法操作

<for start="10" end="0" name="k" comparison="egt" step="-2">
	{$k}
</for>

这里会输出从10到0的偶数。

注意:

name=”k” 是自定义变量名称为k

comparison=”egt”是设置变量与end的比较方式 egt是>=,其他还有 gt 大于、lt小于、elt小于等于。

step=”-2″ 是设置循环步数

上面的循环,相当于php

<?php
for($i=10; $i>=0; $i-=2){
  echo $i;
}

 

Thinkphp内置标签 – 如何在模板中遍历数组

在控制器中查询的数组数据,如何在模板中遍历出来?

1.控制器中查询数据库中的数据

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
	public function index(){
		$user = M("user");
		$data = $user->select();
		$this->assign("users",$data);
		$this->display();
	}
}

2.在模板中可以通过 <volist>或<foreach>标签遍历数组

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf8">
		<title>首页模板</title>
	</head>
	<body>
		<volist name="users" id="user" offset="2" length="2" empty="没有信息">
			{$user.id}--{$user.username}--{$user.password}--{$user.email}<br>
		</volist>
		<hr>
		<foreach name="users" item="user">
			{$user.id}--{$user.username}--{$user.password}--{$user.email}<br>
		</foreach>
	</body>
</html>

注意:<volist>标签中的 offset 是偏移量,后面的数值必须带引号 “”,length是要遍历的条数,empty是表示在没有数据显示

同时,一般不建议通过offset和length限制遍历的数据,应该在控制器中直接通过where()方法限制查询的数据。可以减轻服务器的压力。