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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:) c8 Q% R# V& q+ Q
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    . P! i# m- d; G: u3 i% x$ Z5 ~0 N

  2.   s% C3 }3 k  y" k7 }' `
  3. <elseif condition="$name eq 2" />value2) a/ i% M3 @) W1 h# d# F
  4. + H. N+ H, s# o  D
  5. <else /> value3
    0 v4 @% R% I: j4 s7 c

  6. 9 W0 m9 f9 x: Q1 D- }
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
# z: k, E/ K# T  y% K* z& x- V
  1. <if condition="$id < 5 "> value1
    * M4 R' s. L: {' E" v* d

  2. / H- e$ k+ P# m
  3. <else /> value28 `0 }& `, V+ l- n% f/ V
  4. 6 }4 l2 @$ c2 ]9 P6 r
  5. </if>
复制代码
必须改成:& B: P- A$ ]9 s
  1. <if condition="$id lt 5 "> value1. }) k! p+ B# @5 V; g
  2. 6 Z4 u9 ^& U* U# b2 y2 Y
  3. <else /> value2
    1 e/ w* Y) S/ e* B6 N

  4. ' @! \- k; Z4 k# N7 a
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:6 Y7 N4 B- ?. Z# v8 A1 X: Q- i
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    ' L3 l  m' h! y9 Z- \
  2. ; ~4 e5 ]1 P% [" c" }' B0 G
  3. <else /> other Framework  ^2 Q# o! Q, m5 k8 ]2 T
  4. + u. o; P2 y2 V' n/ g3 T- q' j
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    9 J0 k- X0 W( \; w' Z0 A
  2. ! _  M5 y6 j  i1 ]7 e" S) q
  3. <else /> other Framework4 x9 u) i3 ]( U

  4. 2 P; l4 U& f' F, X0 W* R2 |
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& X8 G9 ]* A/ u4 u$ P* k9 J- n. u

  2. ' F. R# h0 X: w' ~2 R& m  B+ G8 L6 j
  3. <else /> other Framework
    / z, d: Y; T3 w* l' P2 Y4 {
  4. $ G9 N$ w% \  Z3 m8 }
  5. </if>
复制代码

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

  1. eq 等于(==)
    3 g  |; I5 Z, X/ n+ G8 T4 N
  2. : {4 |! w' K1 b4 h, I/ y' P4 S6 Y
  3. neq 不等于(!=)
    , }- w* g& o1 j( x3 p# L6 X1 w

  4. 8 S) {8 N" S4 p  t: e. A* I
  5. gt 大于(>)2 d$ G* X1 V4 V" ?  k

  6. 7 k  _( W9 V+ w  `0 F) \& L
  7. egt 大于等于(>=)" t# }8 O, D; q1 k  r# Q
  8.   g; g8 n  l: z* k
  9. lt 小于(<)7 P$ S7 c% Y, }# u' z2 |$ a+ L: @

  10. , `* s; e  K' |3 I! F% Z
  11. elt 小于等于(<=)7 A2 P1 B" N% }) r' M* x
  12. % f. v6 g# o) s# ?5 Y0 t: }" d
  13. heq 恒等于(===)/ F1 |) o) ~8 @+ g& |

  14. 3 l7 U. N5 U2 y+ m
  15. nheq 不恒等于(!==)
复制代码


5 ^. g3 f& d3 L6 c0 x6 j3 v


% g* H% m$ p& g, a注意
! m) T7 ^  Q& ^( G& `( e2 b' s) jcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
8 K( X( J* Q; S$ l9 j提示4 o3 {: l  M) t
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
% y, f$ n# m4 K* n+ n" E' p如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
6 g3 p% T1 H* e# E0 B5 E, @1 p" Q2 v" o4 z5 p" z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 16:51 , Processed in 0.054468 second(s), 20 queries .

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