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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
4 X6 Y5 a) _$ O
  1. <if condition="($name eq 1) OR ($name gt 100) "> value18 C. z$ ]/ P8 J
  2. % ~4 z0 X4 M( [8 @
  3. <elseif condition="$name eq 2" />value2) X) Q6 r5 H' B! a

  4. " C0 V% Z, K( g4 V8 m3 h, Y$ j# t- c
  5. <else /> value3% a6 F, W! \1 K* ?5 c: k- j

  6. . W) S" y/ b$ G: D# b5 |; M
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:: l) g  F+ ]- P) T5 ^2 E3 p! o: S
  1. <if condition="$id < 5 "> value1. A9 r- W; }' }; V5 C9 L
  2. 8 k, ^/ |' C0 t8 c
  3. <else /> value2; m, `$ [6 u* {: Z5 ^
  4. / v' p, Q" F0 ~: ^* M) G
  5. </if>
复制代码
必须改成:
3 E1 ^, F1 K/ a6 W& N3 i
  1. <if condition="$id lt 5 "> value1! p- Q9 N' u# y$ u8 C
  2. : w: j1 G  @) j# Y0 p6 D8 {
  3. <else /> value2; g+ Z0 l6 m7 T: w

  4. ; j: b. w" p7 L# T/ D) h
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:; E1 x# Z* l1 R) f; c
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP! [( a$ N/ F. ]0 [# _

  2. ! O7 U7 Q- K$ y- N2 P6 w5 E
  3. <else /> other Framework
    7 M- O3 ]1 C: |8 B% z
  4. * O9 J: b. ?  f* q" W8 Y. S
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP1 c7 `( k) G) c3 y- M9 a

  2. 9 g6 o5 `' z$ Q' }$ W4 w" n  G; t
  3. <else /> other Framework$ z2 m6 T3 \7 ?" U
  4. % T4 l) \6 R5 V; u* e
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP( R% L# Y0 c* |1 Z6 w7 v5 \* m
  2. ' Q+ v) F1 G/ x& ^1 h$ M
  3. <else /> other Framework1 x) y: i7 T9 ]" [' o
  4. ) }8 L% Y: n3 J: O
  5. </if>
复制代码

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

  1. eq 等于(==)/ U& |2 V7 z' c+ I* i( }3 {- _
  2. ) W1 H- T( h4 p1 a
  3. neq 不等于(!=)
    1 n) u* Q- V! W" P: m6 X4 s/ s

  4. . T& q' l: R5 k( C" \* o6 Y8 Q
  5. gt 大于(>)3 T  P3 t* J0 r

  6. 1 L' y& J( T  T  q
  7. egt 大于等于(>=)
    ) N7 Y; w4 o4 e4 Q* D( q

  8. . K" D! p3 Z) O* r% v7 g
  9. lt 小于(<)
    8 m6 m$ V6 D6 u% R2 |
  10. / p+ s  A" S% v4 {( L1 p
  11. elt 小于等于(<=)
    ( [& `& W1 t* z0 W! K
  12. 0 |: `6 w: I9 A7 w, F
  13. heq 恒等于(===)! S7 t; b) L4 \- z" I

  14. * E6 m" R/ ^6 F0 Y/ A  u6 R5 _
  15. nheq 不恒等于(!==)
复制代码


* h4 l7 F4 z, z0 k! o' G9 t2 F- M

0 x" W+ d: C3 v) h
注意
4 b  C. a' I- @+ b$ Qcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
8 p( ^5 ^4 W' n0 ]% }& `: Y8 r提示
+ B* P3 z* c; y/ q. i- ]在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
1 m2 C% i4 A7 S9 z如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。: x) `) C' p* t8 y* q6 c

, z$ z- |! C4 D# A) ?2 H4 _5 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 23:15 , Processed in 0.058274 second(s), 19 queries .

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