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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
& r1 H) g7 X! U, \8 H, G% |, ^
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1( N& r& I/ P% N4 R& z

  2. 9 w0 @1 |9 B7 x3 X$ Y. V$ p9 f+ F
  3. <elseif condition="$name eq 2" />value2
    0 f: P( n4 y  p  i/ }

  4. ' d: S9 a, r5 j9 b6 g+ L  k
  5. <else /> value3
    ) e* w4 H4 J+ f, a* C7 U
  6. : h- V( q% Y+ A+ Y& j) X+ @9 X. ]
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
1 u: @3 `' n- Z+ }
  1. <if condition="$id < 5 "> value1
    * E8 ^1 t: B: j; g, j

  2. : v" Q8 w. P8 H) |* [) }
  3. <else /> value2
    8 J4 ?3 p9 v" ^2 G; A5 \' X9 O2 k2 ^4 s

  4. 3 g. t' G! {; X8 F; o
  5. </if>
复制代码
必须改成:
  W" m2 |8 V# H4 i
  1. <if condition="$id lt 5 "> value1
    . h  X$ h2 ?# Y

  2. ) z1 i9 _" q. Z% K
  3. <else /> value2) x- Q- j4 z2 C, g/ R. m  W7 a
  4. $ S$ H- B2 B- C( c
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
' Z* q3 c# p8 R. j& X, P) P
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP: R% s6 e* x7 w) N; X8 C
  2. 3 I: j3 a' c; g8 P6 a, T
  3. <else /> other Framework
    + b% |4 d( y; q5 @2 h

  4. 5 U. u, N( Q6 S6 t- g
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP, k' h4 G2 X2 f- m
  2. % t. y5 t% M& E: `/ q, k  A
  3. <else /> other Framework
    6 }& p# i' [( K0 R, u( x, X1 D
  4. : q/ b1 i$ I* b. U6 @
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! B& A9 g4 P4 Q0 J2 Z/ U9 `
  2. 6 E; m* x8 i; z; z) g! B" `5 p
  3. <else /> other Framework
    $ J* j' |9 g3 ^# F+ h- N
  4. 6 n5 `4 I4 d$ v+ R
  5. </if>
复制代码

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

  1. eq 等于(==)
    + p9 q# v! c9 c  D: g3 {5 ?
  2. 6 G5 [% C' m6 g0 I  b
  3. neq 不等于(!=)+ o! s+ n" K% c# N# M

  4. & {  K" h: b9 O" c! Z% |
  5. gt 大于(>)7 a! G9 t% I8 P. K/ W% L
  6. / z- U  R" N+ C  N, }7 }5 I: r
  7. egt 大于等于(>=)
    # o+ O) A8 y- ?* M6 n) X) c

  8.   W7 d/ y% a" X9 U+ G+ d
  9. lt 小于(<)
    " c& s  \# b4 O) H
  10. # j; x: O3 ?: g0 X$ t# B0 b0 X$ \4 n
  11. elt 小于等于(<=)
    2 j( t  z+ D7 U: r" \6 W

  12. , T% q' G( a  |8 H8 Y) A
  13. heq 恒等于(===)
    , S0 E4 T& D5 `- C, f& D. H8 F
  14. , K4 X0 S8 c  `) p& g
  15. nheq 不恒等于(!==)
复制代码

3 \7 c  J: @2 m) ^# ]* t


! b/ B  g' z8 [5 P# Z. t注意
" M- g) p( _; K* o: Acondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ q5 u0 }5 i: o+ h2 N. `/ J2 n
提示
! i7 l9 o- ^! T2 h在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
) z8 L* O( }/ c. D4 R0 [  H如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。. W! [, F5 K3 L3 m8 ^/ w

2 n8 V+ Q; U6 q  j# N. [: ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:04 , Processed in 0.053162 second(s), 22 queries .

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