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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:/ J! R0 q1 C, X" h
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
      R" V- Z3 X1 Q6 j2 S
  2. 6 y& |# ]" p8 X5 q% L( Q$ L% K: C$ j
  3. <elseif condition="$name eq 2" />value2
    3 P3 e- w0 F( s2 v0 [# D
  4. . p7 N9 s5 b% E8 ~2 J" H& e
  5. <else /> value37 e7 U9 P6 }% u' b1 T

  6. + X8 U; l6 x- [3 A/ v; I  ^
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
; N" p; H1 h; G
  1. <if condition="$id < 5 "> value1, }+ U. D$ S- E* E8 X& ^
  2. & n  T6 ?+ y+ `' \9 E% i
  3. <else /> value2
    3 ~7 S$ N, E6 s! l  D8 t

  4. 0 C( S4 V. R; I/ f: {) e7 D
  5. </if>
复制代码
必须改成:
, o: e' ^  ~6 e( H5 J3 L, _8 r
  1. <if condition="$id lt 5 "> value1
    4 H$ ]- T# c; K7 K
  2. 8 c# J+ {( E0 W6 w. v2 L9 U9 P! k" g
  3. <else /> value2
    ) P9 D4 K& a% p/ g

  4. ' d( L/ P0 r* k. A% l; e
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
) ~7 T) q7 o+ D* A/ b3 i6 }
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP( B5 ~  D8 P# p7 O# I

  2. 5 k& W) M, K% K" S; n
  3. <else /> other Framework
    5 b7 ^/ d. M2 _4 S1 v! @

  4. 4 S! ?0 C: t, F5 q
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    6 K; w9 J  K# e" n3 U6 [6 j

  2. ! h4 H5 w  @6 W! S7 ~- T4 F
  3. <else /> other Framework
    1 d5 D5 z1 i2 k$ N' I  D8 M
  4. + P8 {2 M8 {4 T0 H  A  f  m
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    2 e' w- |. U5 M; Z

  2. 6 _" r& l; z8 E& C& \1 s
  3. <else /> other Framework
    ! c# X2 A$ D, g) }  x
  4.   {: @' W2 f1 ?2 w% S! P- \  u
  5. </if>
复制代码

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

  1. eq 等于(==)
    7 E9 X* Y- s, q9 @6 L
  2. 9 Q6 \7 B. d% u- t  o# [) Z
  3. neq 不等于(!=)* |( X$ h5 M) Y: F; P9 y

  4. 1 u# a/ w6 C2 b& c- J# H
  5. gt 大于(>)9 G; W  x  b- T* L
  6. 0 `& ^' @, m+ U. ^6 g7 V( B3 L
  7. egt 大于等于(>=)8 q5 R% h/ u; g+ h* ]  [1 U

  8. 1 x4 }3 q0 y' F% ?' t: b1 l3 }
  9. lt 小于(<)( i. U  o0 R7 a" s
  10. $ g7 H+ j' T' b* r0 ]+ P; {* d
  11. elt 小于等于(<=)
    * e9 `2 z" l% C

  12. : v" Y$ o( A- _8 D4 K
  13. heq 恒等于(===)
    , F+ H! U. Z( z( I) @" q$ r7 K
  14. ! x2 X# }! Z3 I) ^7 S7 e. n
  15. nheq 不恒等于(!==)
复制代码


  G; L% w! e+ \4 l


( O7 Y$ t6 i' G$ Q2 [/ j" L, O注意
0 ?/ `1 d1 ^# f& Xcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。0 t5 I8 @5 @4 ^
提示- O0 h3 r7 [6 L! Q. L) |) J
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。: I7 G" |9 p% \& i
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% @. j/ |5 k) ^2 c' k

7 C6 _, u; j4 v% f6 l* v5 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:32 , Processed in 0.047793 second(s), 20 queries .

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