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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:  M6 C# }/ @+ `8 e
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1: q* u7 w/ L  l8 t
  2. 7 d4 f' a9 n# m0 @( e( ]6 l
  3. <elseif condition="$name eq 2" />value2
    1 R0 \9 o3 l! }6 B1 p2 R; ^1 `- f- s
  4. 0 F; }) ?+ f# B" g5 q+ U( b. z1 M
  5. <else /> value36 G) U; e4 ~9 |' ~

  6. ! A" `* E5 H9 I7 g; d5 X
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:/ [2 K. `$ T2 A) f) `
  1. <if condition="$id < 5 "> value1
    % I& z9 K3 B! s+ C0 u' y( k
  2. ' y( y1 `5 l7 }# g, [# O
  3. <else /> value29 @  o- Y3 M- l4 n# F" }
  4. * H$ P# o$ u1 ~+ g2 ^
  5. </if>
复制代码
必须改成:
. r9 Y3 T' ~/ e, |9 [, c- c8 f" z8 l* o
  1. <if condition="$id lt 5 "> value1
    5 u4 k- ~- ~0 J
  2. 5 i' [; w+ W; g4 V
  3. <else /> value2
    3 O$ D3 i6 u( O; f1 r) `4 Z0 b

  4. 6 H* z+ A% e% L: D: A3 x! g, F' ?3 o! M
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
6 n6 I9 F. y9 I1 ]( n
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
      e" T# p: v/ N* x/ ]# T

  2. 6 A/ e) F: \  W& ]
  3. <else /> other Framework0 f" ?0 N' f# q: N

  4. - b5 S6 N1 a* a) P, |* E
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- x+ ], o4 A2 n6 I
  2.   W' K. ~+ t/ ?4 r- X  A0 b) N
  3. <else /> other Framework# H4 c0 z2 K1 j+ f& b% X8 B/ d3 x' G: f

  4. / [9 Y' ]9 h. [5 T3 j
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP+ f9 b& n- l3 h( \! u7 S6 a

  2. 9 L* N8 ?. h  V( R# `! Y( N
  3. <else /> other Framework4 U  O8 B4 N1 [& V

  4. . `$ Z% {7 C9 |1 L! l
  5. </if>
复制代码

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

  1. eq 等于(==)
      L  y6 J5 @% l1 N+ G# X8 s3 w
  2. ! v4 ?% p4 n0 Q1 X# K9 Q
  3. neq 不等于(!=)
    7 B' \2 O8 ^7 Y

  4. / ?8 g! L, p2 B# u. C* x% K
  5. gt 大于(>)
    % I; V: ^* m$ ]# z3 O
  6. 7 }2 A* `' D* ]# z" S
  7. egt 大于等于(>=)
    & ^+ `  j0 L- W  g

  8. 3 y2 Z& J1 V$ {' T' N
  9. lt 小于(<)1 x7 E  ?; J* F1 z1 v% I
  10. 1 W* ?( m& E) n$ W+ w4 g. M
  11. elt 小于等于(<=)1 M. q2 {: c" G) Z2 p$ L
  12. 6 U4 a" c9 @' N& [* g, A% a; ?
  13. heq 恒等于(===)- H7 e# h& p! F3 f

  14. " o+ b* f5 B2 z$ ]" I
  15. nheq 不恒等于(!==)
复制代码

$ ~9 [6 I! @  j3 @3 J9 T% l

5 i* \4 M3 h0 n8 a0 ]
注意
* l& z) X" p+ D3 Y1 |! Wcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
2 Q) c" ~  r7 P) f( X提示
7 v& X# t, Z" k: s) I/ X5 s在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
' E& z' P  E' X0 s- O9 w如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。, I4 j- j/ j5 ?8 ~4 c

! [+ q  T: x9 s' q5 |9 r$ m- m. R+ Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-20 00:33 , Processed in 0.053436 second(s), 20 queries .

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