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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
# N5 M% l8 e6 B9 U! R( }8 @
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ' Z: m& ^- x. x; v0 Q3 L

  2. & ~' ^% i$ v/ W3 L0 h
  3. <elseif condition="$name eq 2" />value2; r' E1 u  O5 f$ W% q
  4. $ }, o/ Z' F0 l3 b
  5. <else /> value3' n* J% F* \: g3 N
  6. : b, d2 F/ o+ f; n# \7 R' A
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:" _8 K, D1 \9 |
  1. <if condition="$id < 5 "> value1
    8 j7 ^. e9 Q( g# `6 Y# b* h' J+ v
  2.   T! ]3 j$ M4 z. }! z7 F  i9 B' ~' o
  3. <else /> value2
    3 C1 R9 l) E1 ]

  4. + T% L" V. F! v- e# ~$ z" r9 P
  5. </if>
复制代码
必须改成:
* h* f4 ?! A7 F, |$ R6 {
  1. <if condition="$id lt 5 "> value1; j) H( j' F$ D0 j0 W

  2. 1 h, V1 H  l: ]5 ^2 A# s
  3. <else /> value2
    8 [  k0 X" {  P. `5 t1 h
  4. + c% C+ ^" M9 M
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:  {- q5 D& f6 s! L, S3 X& B( {
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    3 r0 m/ F1 b2 I1 v5 K
  2. # X' q5 P; R8 t. q
  3. <else /> other Framework3 b2 ^' H( H& T. a  R/ g% `

  4. 7 Z7 x% T( Q2 D$ B2 U  y
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    , n' H! K/ R5 j! ^& l0 P

  2. 2 P4 _6 H" V$ p0 x, P! i
  3. <else /> other Framework
    2 l4 F4 A. J; j6 A

  4. ( L, n$ W' G' O- a
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    , P# a; i' _5 D8 h( A* s8 m

  2. 3 B$ _; ]7 b' F
  3. <else /> other Framework
    : V2 W! q: a' p/ f
  4. + n; E' D( @8 ?3 J  k
  5. </if>
复制代码

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

  1. eq 等于(==)9 M- F) u, d, G4 X1 |

  2. 0 l7 F% n' n* J+ q6 U( F1 M( Y6 A
  3. neq 不等于(!=)0 w4 i$ d, G" A9 M! k

  4. / K* t. I5 b. \2 R" d# d$ J5 E
  5. gt 大于(>); H) u+ O) q9 }  i  f3 z0 f/ v
  6. ; {7 k7 e. m+ X  p% M8 J6 d
  7. egt 大于等于(>=)
    4 l4 b+ K2 s+ Q5 I7 Y$ B

  8. / R& _% U4 b+ H2 ~- n7 `! B
  9. lt 小于(<)9 Z" _. v0 W8 c3 g# U

  10. 3 Y+ @) [, ^: P0 j6 P
  11. elt 小于等于(<=)
    5 m1 w/ v+ m. E
  12. ( S$ h* K: B: T( w
  13. heq 恒等于(===), P2 h& H/ P4 u

  14. : ~3 S2 e( c' z  _9 u: `
  15. nheq 不恒等于(!==)
复制代码


  _  j  B" s% ?4 P' f

$ `( V: G" v9 f" y  R" T3 w
注意! J( P: \3 A# {( y
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
: n& w4 c' x* b9 Z提示
8 d4 {: ~6 o+ Q  U在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
$ w$ z3 U7 ?1 F" R8 n3 q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。0 G4 m- n9 H, w

+ c+ D: l7 U' k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 17:52 , Processed in 0.052866 second(s), 22 queries .

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