cncml手绘网
标题: ThinkPHP模板中使用判断语句 [打印本页]
作者: admin 时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:8 u0 [7 y% m- [7 E8 G+ ~5 L# }: u' O0 J+ ^9 @
- <if condition="($name eq 1) OR ($name gt 100) "> value1) R0 S8 C5 O, v& L
( A1 v7 Y! f/ {4 a* }8 J7 X- x- <elseif condition="$name eq 2" />value2( M5 l3 \& E9 u) @
; I$ y+ b+ x; v) M- <else /> value3) {! }5 T: R$ C9 y( A c. C1 A
- 8 m1 s& s3 Y. ~# O
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
* `8 _7 x D& \, a" H. l) @9 C m- <if condition="$id < 5 "> value1
7 R. C1 t% r' @+ ?! L: }; y/ z - 1 D- @7 ^8 t ]& s8 G
- <else /> value2
$ `% u$ \4 v) t P$ S# W F
/ y& B7 n; B& O N5 D9 H. h3 L- </if>
复制代码 必须改成:
# ?3 }( D1 ^. W) N2 O) F+ C- <if condition="$id lt 5 "> value10 a- y) L5 i3 c5 @8 g
) g5 e# i" q+ N) f8 S1 B- <else /> value2+ u* V: w; }# G0 B, y# C* q
- & h7 r+ c+ a0 f# f9 ^8 \0 O: \' e8 P
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
; o3 R0 S0 i8 |4 T0 u. u' e8 j. ~9 b( x- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
: N3 K- R! D, ]0 {
- s& F, k3 \4 u- <else /> other Framework
q4 ~: |8 |$ ]8 X - # `9 o/ N3 Q5 y' J8 j3 r, w5 d5 a
- </if>
复制代码condition属性可以支持点语法和对象语法,例如:
自动判断user变量是数组还是对象
- <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
$ J: k- I+ ^+ y - , Q) b, ]- L @. h4 x3 ^) f* b
- <else /> other Framework8 F( M! h* i9 ?8 \4 T7 W
- 8 j& s9 v6 j$ |. l
- </if>
复制代码或者知道user变量是对象
- <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
* Y- s4 l2 l- O% [8 f; K# ?9 B- }7 o
5 d! U) W# N1 ?) u$ {. a- <else /> other Framework
! a! m2 V3 Z+ g/ [7 u O8 o - " Y; D% Z; A6 x+ P9 X
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
- eq 等于(==)
5 u0 ?% Y) A3 A8 L
4 O, F& B- p: N4 D2 Z" f- neq 不等于(!=)
3 h2 ?9 Q t) d - ! @+ L) V/ C" O" M1 J
- gt 大于(>)
z8 V0 O# A4 o# W d! Q - ( y/ O* }& a3 A* W$ p- I" L9 X. c4 f$ j
- egt 大于等于(>=)
0 Y! P( x/ k& b; X
7 B ?/ ]3 b4 h3 t5 C; i- lt 小于(<)# ^; s& u, O1 d7 } N, X
& `: ^4 Y4 j8 e6 W, W3 e" x& {. q5 _- elt 小于等于(<=)
8 [( u) U) o" u - ]9 l' v1 ^* O% j4 U/ o/ K+ n
- heq 恒等于(===)* f1 D# W/ c- d; u5 @; y0 W1 x! b
# ]$ w' H+ X' y3 x) b) Z7 S+ c' `- nheq 不恒等于(!==)
复制代码
' i* `4 [: k, l1 w
& N+ e2 z2 V0 b: v# m/ J
注意" K' ^" k4 b) i2 K# h$ X
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
7 s) ]! k9 [, l* t提示
/ U m8 A$ U8 j; g在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 Q3 ?- D1 k% j: e+ \
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。+ ?' C& O( M3 I8 Q5 K9 ~! r
7 g8 c$ }* I2 [6 L5 `. C ]
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |