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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:0 s' R- d$ x9 |9 d: e0 N$ g
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    / W. @7 Q# C% k+ B6 P' k  K
  2. 3 ^% s5 V) a- m. u( ?3 ~
  3. <elseif condition="$name eq 2" />value2& Y+ r8 F' J' Z) _+ U$ f
  4. 9 K) h) W: B, S. J; J/ S" q- \* Y9 `
  5. <else /> value3
    5 p, ^  Y& p3 a+ f  j8 N* Y
  6. 9 h1 ^4 O" F: e; e/ |
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
9 \8 G) q5 F* U& I. {( j
  1. <if condition="$id < 5 "> value1
    9 y4 U+ |+ k* V6 P! E. K
  2. * n3 B- s' U* o+ h, @
  3. <else /> value2
    : I/ l1 \4 V0 h. q8 k
  4. 9 y: T/ ]# ^; W" N% |
  5. </if>
复制代码
必须改成:; o% J1 |  M3 H% O4 y% M9 S7 u' v
  1. <if condition="$id lt 5 "> value1
    ; w9 N  T6 Z% }" }/ o/ z

  2. ) n- M; ^- ^  j1 {
  3. <else /> value2; f$ G+ F; Z0 z3 d4 v3 b8 {+ p

  4. / N8 F2 ~7 `( g6 B7 z
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:, `+ I' D9 E1 S" A# S" j9 `
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    3 z9 R5 H1 I& ]. O; N2 a* n" U! @, Y
  2. + \/ M" o  }1 W0 K' V3 G7 ~, _; k
  3. <else /> other Framework' D5 h  g2 E7 l# ]+ V/ L2 t

  4. 8 D3 p3 [  A4 ~4 v. _
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP8 A- }' `/ T1 Y" o6 z+ ^

  2. % X# w- c) c& G4 R
  3. <else /> other Framework* `+ F/ H! m) \1 L. f

  4. # W5 u8 d6 X% H2 |7 ~( M5 t$ M
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    5 {1 w8 q8 B9 c% b& K, D

  2. 3 {0 r2 x5 J( a1 s4 q
  3. <else /> other Framework' t0 w' z0 R% {1 `
  4. / k, W3 e% t3 q. F3 x8 f+ x. e
  5. </if>
复制代码

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

  1. eq 等于(==)1 A: R5 t$ t# Q
  2. $ F- k# k' e/ o  @
  3. neq 不等于(!=)7 f- t* l: \5 Z& A( @

  4. , ^' Q- I& X6 F! z0 @
  5. gt 大于(>)
    % L  O9 i8 \+ k8 S- p, s0 t/ f
  6. , O' M) |- H2 @) C; ?6 Z
  7. egt 大于等于(>=)
    - j; `. S9 E5 \; O5 Y" p% L
  8. " p5 |$ N! |! H7 n2 U2 h
  9. lt 小于(<)1 W( u! X$ w  M! i, G3 l4 T# A: D- i: D

  10. 7 D+ V' |6 g- k& h" ?
  11. elt 小于等于(<=)& S$ A2 ?) V' Y2 D

  12. 2 S. }7 ^& `& {, s! }$ j3 f
  13. heq 恒等于(===)
    6 o0 e. y! s! _1 w2 O& r9 S8 d% @. {
  14. - O  [. h" {5 S1 i8 v
  15. nheq 不恒等于(!==)
复制代码

% l3 p3 C6 g, F7 J8 k# q

/ p  I* @( ^+ V8 V: W
注意* U/ ]" L( P8 ?& g# p) `
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
2 e+ D* H2 ]: F1 \8 z% ~提示! w' |: u6 X% {4 z  @
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
" m5 u8 q4 u& c& i& p2 R如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。/ h, |! s9 f2 a# Q6 O% M

, Y: f- O( ^9 _2 T" y6 ~7 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-4 12:59 , Processed in 0.052059 second(s), 19 queries .

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