cncml手绘网
标题: ThinkPHP模板中使用判断语句 [打印本页]
作者: admin 时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
: H: K5 ?" z, S5 o+ G- <if condition="($name eq 1) OR ($name gt 100) "> value1. I9 \: |/ ?. [, E8 ~5 o& J4 u
) |% c4 k) B8 V: k- <elseif condition="$name eq 2" />value2
t7 ?7 ]+ u" z( r$ y, D
+ P. S& \& x! c% V- <else /> value3
( L2 {. a8 U/ j& _0 E - * ^- E# t6 [: s9 O5 Z
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
6 O5 J6 `. S* z1 P- <if condition="$id < 5 "> value1
& I d+ h4 T0 u* [9 Q6 N
7 W; Y) q8 } G! B, K7 j0 |$ }6 N- <else /> value21 b Z/ b; l+ k* z3 H9 t. m
- * R! c. _) b) y; {
- </if>
复制代码 必须改成:
5 E2 v4 `7 ~* n3 \& _- <if condition="$id lt 5 "> value1
* t$ ]: x" U4 ]7 Z
: W3 U U% S6 S, z- S: g% n3 J& j/ c- <else /> value28 p7 j" [' l+ {2 G& {
5 x7 ?; K: x* f: f, B* S8 r7 z# {- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:0 L) ~2 y' D2 w9 U2 `5 _
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
1 x9 s6 n7 }1 S2 k; Y: } - + E2 F5 T; h( I1 x
- <else /> other Framework
9 m' [% p- ~3 ~1 F- ]: ?
$ ^4 ?, L9 a. q: e! \7 ]9 t- </if>
复制代码condition属性可以支持点语法和对象语法,例如:
自动判断user变量是数组还是对象
- <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* h$ w% [3 x9 j/ F; i O
' q- Z8 w" y9 f6 T+ L- <else /> other Framework
1 i! R( ?, L) T7 } - 5 ~1 j; R1 Y+ P2 h
- </if>
复制代码或者知道user变量是对象
- <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP8 [" n6 K1 Y$ p8 B; u- f. B7 y% t7 P
3 H- F% O4 {$ u* v- <else /> other Framework! A8 v% b' I4 z. y* A* q l8 h0 p
- L" x5 v" X) _. n6 e' |- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
- eq 等于(==)
- ^" W9 G& k3 Z/ A
. V" }5 a' ?6 {5 C7 V' {% Y6 m- neq 不等于(!=)) E3 ^3 H0 l0 x6 E. O2 ?" F
9 q& h5 c* j5 d0 e3 G% P2 d- gt 大于(>)4 _2 f# r1 `0 U& a+ W4 |
- * o! J1 ?8 @) I4 b, h3 k9 p
- egt 大于等于(>=)
' i @9 k1 R- n) E - - ?/ M( Y( X/ P
- lt 小于(<)
7 G! _2 D0 d: x2 K. k1 u - / f; S# r& o9 _4 ]6 p" _( t+ t/ C
- elt 小于等于(<=)2 [6 v# W! ~+ R+ \; P
- 9 g9 V+ d O# I% n2 R: U
- heq 恒等于(===)
4 z ?& c- b: l8 v. |# K" @ - : X$ ^$ ]* V1 V' q1 V. J- @
- nheq 不恒等于(!==)
复制代码
4 M: Z3 w' \( ^% Z+ Q1 T
3 P( U( v+ S4 D. Z8 f
注意9 O9 W$ ^" e* g
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。 v8 p! }, B' Y% Z* F
提示
4 R L+ K3 C& ^% E在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 V9 d/ ` b$ d% F" i% V/ D8 r3 I' i
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
( L' S! [: Q3 V7 p; r w% _/ O/ j8 [( G. Z" i! J
欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |