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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:) h) \1 Y) m$ x* v" M  G0 O
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    + p0 y& g" d8 l( H- L0 Y
  2. / V+ y+ N5 `! U$ x) ?" S; w5 `0 J
  3. <elseif condition="$name eq 2" />value25 C4 T6 S! b& l

  4. ' i( o( ]$ j* u- m
  5. <else /> value3
    - m" h. ^: B0 I5 z3 B& I3 P
  6. : H8 @; B9 ~3 S! z* A9 i- y
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:8 ~9 d: b( \; t
  1. <if condition="$id < 5 "> value1
    # y8 N) e+ s  ^9 H- W
  2. 1 f; E! T7 ]. L! t
  3. <else /> value2) D8 v- d% ~* m
  4. 8 I0 h6 k8 i$ A
  5. </if>
复制代码
必须改成:/ q. \5 x- a. J1 p! s3 q+ i
  1. <if condition="$id lt 5 "> value1' G! F& R& r6 @& B2 c6 W
  2. $ W: m( J4 P0 x
  3. <else /> value2
    5 u, ?6 r( M; w7 w) V
  4. & }8 J; i1 T) v7 B( ~+ ]0 V5 V! M! X6 e
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:" C; L8 I; u, f8 E$ e7 o" {
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    2 C8 i, M& l- X) j2 q  C

  2. ; b; D5 a) j" F1 K
  3. <else /> other Framework
    6 R- f  V( y9 Z
  4. * ^( j; t: S$ t( d- D* j
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    0 ^' ~% V* A0 |
  2. & E( u5 Z  U# E9 I: a
  3. <else /> other Framework
    4 W! T' q1 V) _* p4 ]

  4. ; c) ?, c, a4 v1 }
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP5 Q8 h7 n5 t$ h3 S9 X" u, F& `
  2. 5 O2 T7 l+ s% n( |$ y- [; }
  3. <else /> other Framework1 n9 m2 G7 h6 I+ J1 p( i  s5 _3 ~
  4. * U  K( ]2 Y0 ~; }
  5. </if>
复制代码

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

  1. eq 等于(==)
    - Z; w5 n* [5 p- d7 j8 t+ |
  2. # k/ G' Z  r  u& X3 w
  3. neq 不等于(!=)1 K5 \8 }5 k# \5 d

  4. 2 C5 L. i& c4 n/ d& S
  5. gt 大于(>)+ x& Y8 X% H, i; D

  6. - ^1 T% a) d1 I7 k
  7. egt 大于等于(>=)
    : i! N2 C+ `8 r0 r  ?2 v
  8. 2 g6 R" i/ p) I) B5 Q' Y: S) b
  9. lt 小于(<)
    - [  J5 j6 [7 X, ^, J
  10. ) l" q; m/ P) A3 N! k
  11. elt 小于等于(<=)* O' f3 V9 ]: h' a- @6 o0 \' M

  12. # p- E% q  X7 t( R
  13. heq 恒等于(===)8 P  X3 i+ K& u. E

  14. , k2 o+ x; x. J1 V
  15. nheq 不恒等于(!==)
复制代码


8 V3 J0 |# k& ~

8 k' h$ K: \; @
注意  K9 G& d* s' L1 Z* N5 y& [
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
3 Q" C* C: W8 Q  j0 ^提示3 ^! b* G" A' U7 C! J; h( b1 T! N
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。" P4 K; ?6 |+ ^; o
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。$ a7 x2 `+ v8 J4 I

* A- _, h# H  B( v# o* @" m( R) G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:02 , Processed in 0.045088 second(s), 20 queries .

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