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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
7 p/ {" A- X7 v6 @2 l6 C
  1. <if condition="($name eq 1) OR ($name gt 100) "> value16 V7 \, z* F  n+ g8 u7 j

  2. : V& R2 _  E; R$ E
  3. <elseif condition="$name eq 2" />value2- u5 h( n% k" N: _  a. b9 N

  4. 8 V% ]( j7 W1 {. Z1 n+ o" J
  5. <else /> value3
    1 z" D  ~) B: A( {

  6. " S) m4 B5 `- c- y9 q, W  ^7 D
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
% ~8 _1 ?1 g+ o
  1. <if condition="$id < 5 "> value1& @; N! q' J& J6 _  j3 d
  2. * U; `8 @5 G/ X4 @" \6 T
  3. <else /> value2
    * X5 x/ A; v3 }
  4. 6 x; n! w& `. b0 f3 A  s
  5. </if>
复制代码
必须改成:# ?9 f$ P4 j5 ^
  1. <if condition="$id lt 5 "> value1
    9 |- B2 Q5 p& O/ M, J# D3 e3 V' t2 N
  2. + b/ c' n9 F8 T& F3 f
  3. <else /> value2- @# Z! i( v+ ]! m* `
  4. 7 p$ G9 ^! }- J& u$ c0 @
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
# \; h9 Y# W. D8 ^4 A. h) _
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP" Q2 \' W, Y! \* J7 J' P

  2. , ?$ m; B3 ~& Y1 ~
  3. <else /> other Framework
    * z* C) s* G4 L$ A; _, V
  4. 9 I$ g; u2 |3 b$ ~" S, O) J4 A' V
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* K) \/ G3 Z+ x5 z. O$ s
  2. ( c4 W% _# D  G" R
  3. <else /> other Framework
    / M* ~, h3 s$ H" |+ c) y
  4. . E. j' t4 X4 S7 c8 |+ l
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    - e* N: \" ]  [( g9 V' ^

  2.   m$ a) K2 }  D: V2 f) q
  3. <else /> other Framework
    * I" E7 w  P/ y) c6 y7 ^

  4. 7 o: }8 V  E0 _
  5. </if>
复制代码

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

  1. eq 等于(==)' h: M2 n5 u1 m6 q
  2. " i' J8 M# m( ^
  3. neq 不等于(!=)" ]% _+ o& ^1 z$ n9 J$ `; I

  4. 8 I) y7 |3 \' ?
  5. gt 大于(>)
    / r( U- m! o4 q2 t
  6. 5 v" u& K/ W# T' z, C" D) H
  7. egt 大于等于(>=)0 n( R. v0 x# i; F% g% I& w* o
  8. 0 q' ]9 i1 A) w- {' g7 s; {) Z
  9. lt 小于(<)3 @" f6 l. r; O

  10. % f/ [: i1 E7 m8 f& X
  11. elt 小于等于(<=)
    ! ]: p. P" Y+ h# z) i! k
  12. 8 l& ]% j) ]; C& P2 }
  13. heq 恒等于(===)- q) j5 x5 v$ X, ]6 ~

  14. 0 V, I2 Y1 R9 d7 @* t
  15. nheq 不恒等于(!==)
复制代码


) E, K" p* T/ W

; R7 z  S4 Y; {4 Z1 p" l
注意
# }& j2 h" t0 y6 A6 C+ Ocondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。" D/ R( n1 d/ Q
提示
  `+ w$ G* d7 d: V0 m4 X在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
+ K& B9 M, ^; p. o' z8 P1 q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。9 b2 b" t7 D8 h
2 O& b; |* ^+ Y" K2 G9 P. e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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