cncml手绘网
标题: ThinkPHP模板中使用判断语句 [打印本页]
作者: admin 时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
0 E+ E- _1 C' l7 P- <if condition="($name eq 1) OR ($name gt 100) "> value1
6 w# }7 b( h) R3 j - 4 Z, @0 R) o: M# @) z2 l
- <elseif condition="$name eq 2" />value2
/ |( Q0 S3 E$ B* a. Z: m/ m - . G' U7 R1 X, I& M/ z% o1 u) t& c
- <else /> value3
% K- y! Z5 }+ ]8 k - ' N, D- [0 `# ]$ f3 f
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
^ I, s$ `& I( o- F9 B- <if condition="$id < 5 "> value1
" h+ Y$ b8 m& ?+ [
( S5 W8 T+ y) P, k* k& ~+ m- <else /> value2+ J6 n: {: D8 ?( j3 k' m! R
- % q5 ?( w- z: [6 j' K
- </if>
复制代码 必须改成:( d1 V( i4 d, x; x+ g
- <if condition="$id lt 5 "> value1
+ }" g; }2 C" [+ _2 o, O4 c! E$ w - 8 [) R3 i# D9 r0 u- W, o9 B
- <else /> value2" \5 z8 @0 M" G
! v* y3 P& D# |- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
' ~3 }& i1 ~9 ]- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP9 {& ^" x+ @+ o6 b
. Y9 ]" g" j* h& m' S9 u; i- <else /> other Framework
# ^5 Y8 p' k$ z - ) B3 Y2 w' H. R: V
- </if>
复制代码condition属性可以支持点语法和对象语法,例如:
自动判断user变量是数组还是对象
- <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP7 l2 o. f8 b% ~
- 9 |1 I4 \, G' S+ i) C
- <else /> other Framework
" b) n$ f: O( A; O1 |; r+ i$ g
7 [' r" P/ x/ c6 A# X, {$ M' s; I5 `. f- </if>
复制代码或者知道user变量是对象
- <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP2 ~! {: r/ P$ x( s
. x9 F& b6 T9 c$ Q* ]& C/ q( u- <else /> other Framework! ]% s$ G4 ~0 `5 Y3 `& s! b
+ c1 t3 k- S" T I1 [0 E- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
- eq 等于(==)( P T+ y" C, Q
' o6 L! g9 T; @* y- neq 不等于(!=)
& f+ s* P( N: Q/ ]2 j
2 g2 t' _' ?$ s* N4 I& W/ ?6 C- gt 大于(>)
' i3 U5 r, b6 p0 b; ^8 M' d1 R
6 R% |% @4 e0 C& s. F7 r# Q" P% n- egt 大于等于(>=)
7 x: C7 _9 g6 Z6 G - ! w: Q1 Z4 F' ]8 j1 ~+ B
- lt 小于(<)
3 T; Z2 k& _8 V( n- T - . R8 A7 x r# }
- elt 小于等于(<=)
t9 A6 y% W' n; g# a3 }* @. E! ~, i - * C5 f @" x; W$ \0 n
- heq 恒等于(===)
, o7 e# i F2 K' X1 O
+ {% ~0 q5 k+ T7 H: ~- nheq 不恒等于(!==)
复制代码
; [( t% k& |& L, F: G, l
+ z! p, O* Y) C* x注意% `/ u( [4 e$ X1 D+ @% ?4 n. ]
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
, _: w- J7 N* C2 G2 X9 p% B2 t7 k提示1 b( U9 n, U& C3 t$ B! L
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
$ m; I" ?( q6 S& H( \4 [3 E; t& _如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。' [2 {; k( o& P$ a" y
+ D$ K& e8 p7 O) q4 B
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |