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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
1 p8 H" I9 v! ~) w4 `
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    7 Q: ^4 C' ~' I# z
  2. 8 p' _7 r3 @# C# I! P, S. o  }
  3. <elseif condition="$name eq 2" />value2. ]# N* }7 N  }. c  X: I2 W

  4. & O  D: Z  m4 p7 ~3 e0 ]. e
  5. <else /> value36 V; ~: Q  z$ H5 T, W- n
  6. 2 m5 r$ j8 n% D
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
' s! ^5 R" I- m& _' Z  J* S( i
  1. <if condition="$id < 5 "> value1
    5 N- |; `# P& I4 }8 {5 T' H

  2. + d- I" Z9 U( _: c1 [/ X
  3. <else /> value2+ r# \5 H- M& k. ?

  4. / }  T  M7 ]8 p
  5. </if>
复制代码
必须改成:' d) X# e- _/ t* \
  1. <if condition="$id lt 5 "> value1
    ! t9 {- H) T! `: R. [+ M7 z
  2. + j+ o) P' k8 D  b9 q
  3. <else /> value2
    / l2 \/ F  Z6 w7 y  J* k
  4. + V! y2 s. h$ Q' P% g
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:5 D9 H, \; V: L6 `* u1 \% y7 O
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    8 W' \. s( E9 H7 g7 [

  2. " l+ T) f& k: D  A* x4 ]* a
  3. <else /> other Framework9 S) Z- z; o& s2 g1 ^& W

  4. * ]: |/ b6 S: m8 k" \
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) |/ \) ?+ V$ q% N% f

  2. 8 }* n  K3 ~+ e  C. B
  3. <else /> other Framework
    . z! f- H7 |/ N/ D' x

  4. 6 V  [3 `0 I# h1 _0 i
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP- G0 x! E0 o7 k# `$ o- z
  2. 6 |& A6 P4 r' n# W
  3. <else /> other Framework0 C3 M$ j; {, J4 P$ S
  4. ! t1 i% b. _; v  T
  5. </if>
复制代码

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

  1. eq 等于(==)
    7 T6 g) h0 B; R

  2. * q  s' m, k' U/ x2 ?0 P
  3. neq 不等于(!=)
    4 S$ L& Z0 H1 \
  4. % d% v3 ~$ C# r2 L/ `! j
  5. gt 大于(>)9 M; v- f6 L8 H+ h
  6. - i4 C* s& N1 ~
  7. egt 大于等于(>=)
    ( T( B$ `" N3 g7 d

  8. 5 A: c) F7 b4 r8 O# t
  9. lt 小于(<)) E- X2 t* E* Q

  10. 5 ?. F0 B+ }6 P; U+ @
  11. elt 小于等于(<=)
    5 `8 m; u; a, g1 m
  12. 8 F: P5 f* o; A( Z5 l; L7 d  }( g. I
  13. heq 恒等于(===)  S! `( j% ^7 }4 k# h
  14. ; W$ I8 b% ?( H, D/ g! W7 J' c
  15. nheq 不恒等于(!==)
复制代码


: |: r: e  r# I- g/ }7 d" x+ T

2 z$ c; H1 r$ y1 i: k0 D
注意, G7 \( }; `$ w( ?1 S3 d" J( K
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ M* S% G, v6 |# J; q8 X
提示
/ E6 J* ~. V( d* U& k3 a. {2 H7 k在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。2 k' e0 H; U- `4 _2 Y: Q. H
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
; W) s; T0 g. \. a9 P( ]3 e, ^
0 q: |) D/ k$ _2 ?: _9 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:02 , Processed in 0.046864 second(s), 19 queries .

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