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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
4 e6 Y1 l( J% r
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1% z4 `0 `; G- w
  2. 1 J; Q9 G: T! s  e
  3. <elseif condition="$name eq 2" />value2
    % R' S+ l" v: }* @6 {% x

  4. , ]/ |% K8 B/ o5 r) s( G
  5. <else /> value3" @0 C4 P. n1 R8 e( i& X2 |
  6. 6 h6 d1 B7 G9 C7 Q' i2 N
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
8 q. a6 c* [5 m2 S0 r# o" A2 g7 S
  1. <if condition="$id < 5 "> value13 u, X3 O' E5 i! C% ~
  2. . o0 R9 n; v: `" K! f" ~
  3. <else /> value28 T2 F9 @: Z9 n6 \& y

  4. ) |0 u( v/ |* N
  5. </if>
复制代码
必须改成:
; V" v( j% c6 r' [
  1. <if condition="$id lt 5 "> value1
    . K* x' C9 p+ i+ N8 @. w6 t* V

  2. 7 h' ~" `) u( i8 \: L" h2 N/ ]! ^
  3. <else /> value2
      G6 h2 x# _) z  Q

  4. ! G7 J( u/ Y# |: j9 b) l0 H
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
% M) n; a8 s  p; ^1 F' l
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    0 w4 R+ D/ }+ r( b/ z- k
  2. " h+ G1 E8 l" y' n( B4 y
  3. <else /> other Framework
      j& E# N" h0 }/ w& S' P4 ]7 q- R
  4. 5 e1 C7 C2 X8 v9 T
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    # A& `3 A. w( Y

  2. 1 W+ ?$ j! Y5 M7 c( J, e' s
  3. <else /> other Framework. u, [" K5 x) Z0 y5 G$ m; X% ^
  4. * g) c0 e9 h& N: H5 I. T5 ?
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& t0 a' [' e8 z

  2. " ?- H7 m2 p! r; h3 k; d3 o
  3. <else /> other Framework) s* A  h9 @) ?$ B- H9 N

  4. ; w/ W3 g4 I% K+ e
  5. </if>
复制代码

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

  1. eq 等于(==)
    " ^1 U$ j8 }: i2 @  s( y
  2. , X/ W* ~- M2 @* o2 e
  3. neq 不等于(!=). X% h9 ?2 j( h9 \3 k
  4. 8 E2 k, U9 L! N% S' X
  5. gt 大于(>), K2 N" g8 v* ^$ t
  6. + n( Y( N3 a( ]4 r' T0 o
  7. egt 大于等于(>=)
    % v1 x1 H7 n' Z

  8. 9 C# c, F% t( m* j8 H* X4 L
  9. lt 小于(<)- A7 C; B; U* C. Y/ F* S% t4 ?
  10. 4 q  W* ^1 K3 ^& m$ [# D
  11. elt 小于等于(<=)
    7 E. I3 A5 {! y7 p6 d1 j
  12. 1 Q3 Q  I9 f1 T3 m' ?. x
  13. heq 恒等于(===)  A$ p2 ~$ z7 U+ p* a

  14. + Y  P+ @. ?  R4 r' I
  15. nheq 不恒等于(!==)
复制代码

3 |0 C- ]0 S: ?0 N4 Q* V. h% l


. A- t. T' k+ ~. ?3 o( ~' {注意
% u. K. a% A( j) E* F2 ~/ S) R6 g# Tcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。% e/ g: q; E% d/ o! E4 k
提示8 ]/ A2 p; K( [, P6 A6 p: [& Y
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
+ T- p+ }3 j! E5 t; i如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% E$ X0 N' w- l4 ~
+ w) v4 P+ v) Z; S1 O* M$ G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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