您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15161|回复: 0
打印 上一主题 下一主题

[thinkphp学习资料] ThinkPHP模板中使用判断语句

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:4 c: R' I) Q) ]& Y
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1& R: Z1 o0 w( s9 g

  2. ' b% C' H; n2 L4 Z
  3. <elseif condition="$name eq 2" />value2
    . i: Q) z1 @# y6 W- O/ i$ ^

  4. 1 V: R7 k+ I* E8 L( @
  5. <else /> value32 a4 q3 W2 M( Q
  6. 6 W5 b4 d; L/ h/ O- K
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:$ o; C% h  w6 y# e
  1. <if condition="$id < 5 "> value1  a% }/ [9 Y. m8 C; `: h9 M

  2. 6 W3 x* {- p$ T; N% t
  3. <else /> value2
    5 l9 J8 a& o6 x
  4. / w& k3 H, I  F# o9 F
  5. </if>
复制代码
必须改成:# H" E6 A2 U0 R4 o
  1. <if condition="$id lt 5 "> value11 T+ s) F& m. r# k0 P% y( ^+ \

  2. & ^5 b* r. c- M7 t" A, j& K+ v/ X9 N
  3. <else /> value2! u0 G: Y+ S  o0 T
  4. ' l, E& m1 U- t, R) y% u) m/ v4 i
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:% _  R+ }5 K  `# B
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    9 }7 G" H( P; x
  2. & p4 L$ p4 w1 r* I; w+ s
  3. <else /> other Framework) `4 C+ g% G5 |/ t
  4. + O7 e; }! z6 m6 ]+ y% t9 l
  5. </if>
复制代码

condition属性可以支持点语法和对象语法,例如:

自动判断user变量是数组还是对象

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP/ m2 l" ~7 Z$ _

  2. ' Q" N3 z/ z! v( h9 C8 U3 Q
  3. <else /> other Framework& B7 Q+ T: C5 g" X2 H; O
  4. # N! i3 w# v1 o" F
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP: U! Q0 B! ~3 t5 e* B3 _

  2. # t  s" ^" v. \! W! p) k
  3. <else /> other Framework
    + ?3 t5 M6 h! ~$ l. @7 D; @

  4. ! }. B" \2 ?3 c: v
  5. </if>
复制代码

由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。

  1. eq 等于(==)
    6 d) W: h* u' }& I- f
  2. 9 u! L, ^3 G2 c  s
  3. neq 不等于(!=), e' j3 a- n  R; V

  4. * @% G% Q3 P+ M3 k: C( \
  5. gt 大于(>)! s6 ?( M. {: `9 t0 @5 ?
  6. % u1 M+ {9 Z) M* ]+ r+ k& k
  7. egt 大于等于(>=)4 w4 l0 @& Z4 N+ J& Y
  8. : \/ A3 l4 ]& X: v
  9. lt 小于(<)" O' b& Z: E% y+ e

  10. ; h$ V5 A/ p) R8 X9 C
  11. elt 小于等于(<=)7 a* _! `: v6 k0 T
  12. & p/ k- U. {! ^5 M+ e1 h- ]
  13. heq 恒等于(===)
    7 o8 P# i: P  U9 W
  14. - v, u$ S1 p6 _% [8 z( h
  15. nheq 不恒等于(!==)
复制代码

" @+ c# l, u( i% [8 K# M. U

1 T2 k( Z3 i- a; @" {% u
注意5 M+ O' H9 z4 o! o& W' S
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
$ |5 I8 X( J, J, b提示- J2 R9 |' s, Y) j# Z
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
9 @1 y/ o, W0 w4 c1 U4 U" M2 ^$ B如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。+ d3 [8 s. k$ m$ F3 b! X  }( u5 Y
! Y+ q  Y* y- ?1 j3 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:20 , Processed in 0.054061 second(s), 19 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!