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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:6 l$ O" J6 d2 N  j' _' ?) {
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    , c+ [: i; b- P6 P
  2.   N: U0 D$ u  B) l# ~) F6 ?, e4 P) o& e( t
  3. <elseif condition="$name eq 2" />value2+ R( }. |2 s- A, R

  4. 6 A! u' O; }4 W% E, I
  5. <else /> value3
    & T2 E2 w5 o  t, ]0 T; [9 f7 X2 Q& Y
  6. * D/ c0 |$ g4 P7 g1 e" q
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:; K' B. T9 S) g$ k  D' Y  w
  1. <if condition="$id < 5 "> value1
    . f0 q9 X9 c9 f9 J+ D& b2 w% t

  2. ! ?. H" L: V# _% K
  3. <else /> value2) b, N( e& B; x+ s. [

  4. 2 e/ m+ q9 c% u( [( E
  5. </if>
复制代码
必须改成:0 ^$ C4 ^8 u% X- m% r! U* E
  1. <if condition="$id lt 5 "> value1+ F# s: |; p% C  y  y" H* P
  2. 6 o; E# r4 a2 B* K
  3. <else /> value2
    8 C. J& ~: B" O" ]# U8 M* v- m7 P1 O

  4. ) b' u- n& s% y
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
- Q4 `$ ^6 C/ n2 o% g
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    2 y8 q# K1 ]3 L

  2. 2 r1 K/ [+ V0 L- R
  3. <else /> other Framework
    9 K  q% l: V9 Z4 A
  4. 7 @" I5 S9 }8 m7 L
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* s4 b2 l; {. V5 i$ q

  2. $ ~) _: b$ X2 s' X' F
  3. <else /> other Framework
    / g0 C! G6 n* i, K
  4. & K% l3 o! A' @  q' ]/ B
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! l, |( i  Z7 o: @7 Z/ E( V- i  \
  2. $ I" i; m& S# Y# O& I4 Q0 C
  3. <else /> other Framework% v; g& f, t, \, g$ _& j

  4. - i# `$ O, p2 w% G9 I1 v
  5. </if>
复制代码

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

  1. eq 等于(==)8 @- l* i: e; U  q6 g
  2. / ~8 p4 s) g  m  t1 C6 M
  3. neq 不等于(!=)
    * y& m. `- j! x- B+ I. p# m

  4. 2 i; W! h+ z0 A7 X8 C+ b! ^
  5. gt 大于(>); a% `3 ?, R& g: M

  6. 9 o+ e( K/ R- ^5 a2 }5 L
  7. egt 大于等于(>=)0 ?& G; Q6 d: v$ G! H! z; N8 c

  8. $ w4 C. H+ ?5 E/ I4 v) t/ v& `
  9. lt 小于(<)
    $ ]8 X5 V$ @, k% t& t! b
  10. 2 s9 h+ O5 a% i: C6 t5 T' q
  11. elt 小于等于(<=)$ _4 {( F4 N) K( @/ f" s2 [- R: s
  12. % M* a+ U4 |7 m' X) L$ }
  13. heq 恒等于(===)* p8 K2 H# w7 Q1 v! d3 b8 m

  14. 8 h. m8 ~0 x7 k, |6 K1 V
  15. nheq 不恒等于(!==)
复制代码


  h  s) M9 d( p2 S3 q$ k5 h, O* y


/ ]1 i% u+ p+ p3 L; H0 c) c注意
8 P+ M( _8 f' V  Fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。: ]3 B/ m  Y- l# r2 ^3 M
提示
( Y1 v/ Y$ W0 ?9 A9 l9 G在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。0 _- a, v) Q! f: v) ?5 ?/ F$ M
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。3 c: Z( n: q9 `. Q

6 _3 @& Q# W( Z8 D. P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:53 , Processed in 0.058453 second(s), 19 queries .

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