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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
$ D, f4 r, X- W' `
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    0 e, p3 B0 x$ U% z& j% C

  2. - m! z, e# V( s6 m; S6 C" g
  3. <elseif condition="$name eq 2" />value2
    . z! u; W$ U& {3 W; j8 F
  4. + N! Y* x8 n) `7 X
  5. <else /> value3; [) H4 N# a. S7 s. h5 {: A

  6. 2 S+ `* o/ m- {2 Q7 F7 N! d8 ?& a
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:9 `9 ~' O% U- f; w! i1 G# f
  1. <if condition="$id < 5 "> value1
    9 j0 h4 D/ Q  Y* X! A% Z& _
  2. ( G) O% q" J5 |7 `! B4 K  u
  3. <else /> value2
    2 @0 W) E1 O+ W# W/ ]5 Q
  4. ( ^1 \0 g4 [) C( G
  5. </if>
复制代码
必须改成:
/ C- |' z4 D8 ~& J
  1. <if condition="$id lt 5 "> value1
    1 `* z, f9 z$ i# k4 B% Q  D  D  c3 l
  2. # ]: ^) |; l# ^( J: b# X
  3. <else /> value2  G9 r$ P2 _% H5 I7 Q# i3 c

  4. 1 }9 I1 J/ h; x7 y8 X$ S
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:: \- N# i  A. a+ e. I+ b
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP$ T$ ^5 [2 F; y% A1 v
  2. 9 @/ F9 D3 M; V/ |0 q; j5 ?( g+ H
  3. <else /> other Framework( h9 K7 r. E3 h% r; h

  4. 4 e- A) u* z7 h8 J
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) y/ X" q7 Y! {# w# N* I
  2. ; [/ v5 R& S" u; u4 E+ I# q  R6 O0 v
  3. <else /> other Framework
      D; ^- _% K1 h% o1 m3 s+ Y5 y

  4. 4 I- D: b+ h/ y8 j# Z, p* Z$ w
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP" V3 F; p9 w: B% w

  2. 6 h/ v- M. [$ J' J4 d8 c& {
  3. <else /> other Framework
    ) L$ d6 c; U2 Q& ~8 Q

  4. : |; {+ o& A4 v' H
  5. </if>
复制代码

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

  1. eq 等于(==). N- \" k8 x7 r6 R6 F: G" Q
  2. ; d! J% g3 ]& F) u
  3. neq 不等于(!=)* V1 [( t+ G* J

  4. + o/ B+ z8 I6 F( Z' n. J1 q) j4 s7 T
  5. gt 大于(>)
    1 s. i. t8 S3 D9 S( K1 j8 W

  6. : t! x# c& r# `2 O3 ^; D
  7. egt 大于等于(>=)
    ; F8 r; C3 E' t: B' I
  8. 0 e5 G( t/ l+ k" V
  9. lt 小于(<)
    7 B5 [' {0 ?9 Y/ v2 k

  10. , w* \! h# X, J: m) H2 }1 N: r
  11. elt 小于等于(<=)
    # }! N- O4 F( m3 I
  12. 7 r  p+ w7 d# x* f: j/ S
  13. heq 恒等于(===)" W. i* g& Z0 n) b0 a; K
  14. ( _$ N' b& J7 ~0 w# V& c3 V5 {
  15. nheq 不恒等于(!==)
复制代码


$ H3 A4 u5 r$ Z8 n! q

* }$ a" i4 m# t! a. T9 @- V
注意1 k7 M1 G0 ]& Z$ o9 d+ f
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
" u/ D2 c) B( U提示0 Z) G8 R2 D! J0 P3 K! d7 B! U9 F( `
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 ?6 e1 M- M  z8 H' ^
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
- Q( `/ |# e( [, @& _. E+ Y" _
# |# X( _8 T+ u; w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-4 09:32 , Processed in 0.063664 second(s), 20 queries .

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