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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
) s, `- M2 \* }0 U6 E- f, C
  1. <if condition="($name eq 1) OR ($name gt 100) "> value16 G/ L1 g0 Z) w' w7 ?
  2. ) }* h' d' o0 K6 O
  3. <elseif condition="$name eq 2" />value2: V( ~. J+ G8 V* @5 X$ L0 V. I) W
  4. ' ?* O0 `: j1 K$ H' N
  5. <else /> value34 e8 ^" P7 ~# |+ S

  6. ) k# W. m1 d3 t5 J4 p: a
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
. t2 r! Z% l" d2 U4 x2 |5 G) d' M
  1. <if condition="$id < 5 "> value1& P6 F4 n+ R0 }, ]/ a1 w
  2. & G1 d1 P6 p1 L. k0 j" V
  3. <else /> value2% `* F  x5 S8 a' ~
  4. . l1 m& U) f' c$ W/ |
  5. </if>
复制代码
必须改成:) U+ N* `; H, `- {
  1. <if condition="$id lt 5 "> value1
    - S8 i$ M4 P; a1 y+ x& K- M; g

  2. ! R( U7 b- n7 ]# C# {: n0 u1 h/ L
  3. <else /> value2
    2 f3 `$ W4 y0 S
  4. / W; A9 M6 q" |, i  K: ^4 e
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:. F3 Y% g9 y% l
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP3 W4 U3 S% N( c* A: r: `, M

  2. & A# I8 R  e& C" ]2 Z$ w
  3. <else /> other Framework: u2 H3 x0 F0 H& j

  4. & Q7 x* M- c' b* b; y
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    4 Y2 B2 o0 ^9 b

  2. ! _+ S/ m, K( g4 O- ~) s* v1 L
  3. <else /> other Framework9 H4 m6 S8 V7 Z

  4. % ?0 S( U* C; R3 n) r4 W" i1 h
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP( m$ x$ S  z  P7 N& w  X$ ]

  2. ; ~, |' \9 H$ N& L4 `
  3. <else /> other Framework
    2 l! j9 b6 {1 d+ |. L

  4. 1 h7 E' q  M6 l2 i( v) d+ n% m
  5. </if>
复制代码

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

  1. eq 等于(==)* V% y0 q- o- ~- s' T) Z
  2. * }3 g$ |1 n" l2 ~
  3. neq 不等于(!=)
    ) ~: q( H: g  I+ L! b, Q
  4. $ O0 V8 Z& D; g( u( j
  5. gt 大于(>)
    5 n( t0 Y1 l( a( c% m2 I

  6. & U; c# b/ M, y' D' d
  7. egt 大于等于(>=)
    ( K! n7 B, H5 m6 k/ a' Q$ [

  8. , P$ `# R% T4 r. b. K" S$ b" }1 Z5 p
  9. lt 小于(<)
      U8 j4 h2 t$ n: {
  10. - X8 Y* g7 H+ k8 V( h
  11. elt 小于等于(<=)2 v* J& v" B4 l' J( l

  12. 0 |/ ^  G4 s7 T7 {2 V
  13. heq 恒等于(===)7 M7 B) M% q" C5 x: I/ d1 O# ]

  14. % a' E- f0 r' s: o0 s8 G
  15. nheq 不恒等于(!==)
复制代码


7 G# {7 ^) _* m  |" o

* ~7 n" A: K; X+ X8 T( I! K$ L
注意2 L3 m' e+ L/ c# n4 p1 A# M! Q
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
) U0 D: K4 _- {& S* _提示7 B# L! d# z' w. E
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。" a& x' H$ x! z% I; X
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
0 a) w- s2 G( |, h4 t% d% I1 s5 X, e" |7 r8 r. P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 06:01 , Processed in 0.056271 second(s), 22 queries .

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