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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
9 r6 o$ A6 Q4 L/ F3 L
  1. <if condition="($name eq 1) OR ($name gt 100) "> value15 |! B5 [! d5 a( G+ |

  2. 3 ?' \8 Q0 s. s4 {) x* g" l
  3. <elseif condition="$name eq 2" />value27 u2 J* |& V$ z- g
  4. 6 Z; V) {( e+ S& p# I- e
  5. <else /> value3* Y) h" b; }/ T+ c- E

  6. - Q) R0 E& x" A, r2 }
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
+ w* x7 ]1 @" d- p& |
  1. <if condition="$id < 5 "> value1, w7 j) p* G: A: ~  u3 h6 F

  2. : s9 J: ?7 p$ s
  3. <else /> value2/ r4 `9 V3 m# W1 \1 ~  u
  4. " y6 j+ E2 N. h/ i
  5. </if>
复制代码
必须改成:
! H% z5 }3 [3 y7 w$ z: S
  1. <if condition="$id lt 5 "> value1
    " [* h8 r' _4 ~- D4 X

  2. 8 _/ j& h( g2 K& {! B# o$ o  J
  3. <else /> value2
    2 W1 K( I! T$ \

  4. 9 F1 b+ e2 v2 f( G! Z) o/ g
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:; d! ?  }, h+ `' |
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP! B) [6 |6 b5 @# y8 @' j' F7 x
  2. - L2 J, p" L1 T1 q+ c* _8 m
  3. <else /> other Framework& w9 D. I- Q( O; M
  4. $ `' ^, t3 S9 d% y6 j! I. V
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP; D7 C3 w( L5 v$ _1 W

  2. * Z0 r4 X; f; b3 g1 f: E
  3. <else /> other Framework4 w( l5 E: V: z: P$ x& u& P$ _

  4. ' o9 U0 b" e0 m0 g2 ~* K; e
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! ~- t' y2 D4 R+ d" v
  2. + |, q5 Q7 U: d# D& m
  3. <else /> other Framework
    0 E0 m8 T( K1 S/ M+ T3 ]

  4. " i% e7 |6 A1 j6 x5 E
  5. </if>
复制代码

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

  1. eq 等于(==)2 w+ K/ H+ G' C7 P5 G. i" N( E, t& u

  2. 1 R- V# f8 C7 T; `
  3. neq 不等于(!=)9 @& d" y* C: y4 [0 F
  4. 5 C% O( \2 w' g8 `: _
  5. gt 大于(>)
    2 s* D( J. O- ]8 \; F7 W7 L, X
  6. ' b4 I* q. f$ y) y; ^
  7. egt 大于等于(>=)3 ]3 X2 S5 v. w1 Z
  8. & P+ [  t& i& J- e, |- ?; [
  9. lt 小于(<)* _5 M2 v6 o, n) i8 s6 r

  10. / x# {& m  m2 @7 J% I7 J
  11. elt 小于等于(<=)
    5 P1 I! V9 [4 K7 }2 Z0 h

  12. ; Z$ }/ S0 n' R9 n; b+ P
  13. heq 恒等于(===)
      w) w# k& O! |- V1 i) U/ p
  14. ( ^: P9 G4 j" d2 W
  15. nheq 不恒等于(!==)
复制代码

8 L6 w" g  ]4 k) \' u


  {' y5 G  b( d, c4 ?: C注意
1 G0 i: k5 N/ fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ m; b8 y" n( H
提示
! t) c0 ~& X# h" D; o, B在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。6 D6 r6 {3 ^4 @* F
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
: p9 K- T2 T* S. Z4 u
" R0 _  j$ d4 U0 o; w" H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-15 10:45 , Processed in 0.092048 second(s), 19 queries .

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