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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
' f  \3 B4 Q. o% u. Q
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1/ k% G8 x, K. k; f; Q& T
  2. 4 [! y5 q( R" k# Z" z
  3. <elseif condition="$name eq 2" />value25 N0 Z+ l9 ]  N. n; J$ ~. R4 B
  4. 6 d& c. E" [3 H: ?$ e$ G
  5. <else /> value3
    : o* H- R7 z; |& i3 V
  6. 6 ^: l% b1 [/ ]. k
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
' t! B, P0 D  E# W2 ^' g
  1. <if condition="$id < 5 "> value12 a5 I: u! r* `, }
  2. 3 l, F$ |8 b- [, }$ P" p
  3. <else /> value2, g4 B4 K  \, p! x
  4. . b' k9 h+ N) _; m* s  ^$ v. M. a3 q: \
  5. </if>
复制代码
必须改成:6 r! U* R' ]  {1 B+ ~0 k. P* e
  1. <if condition="$id lt 5 "> value1. l8 f0 x3 N6 E
  2. 9 }) N# L1 q: z$ q, S+ P/ \- D
  3. <else /> value2
    - o" j9 t- C4 R8 E! o  `" T$ {) b3 Q

  4. " j2 P  d7 b/ F' w! N8 B2 i
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:, O( d& l: w2 U
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    " |/ P% b7 w9 J: z1 w- a0 ]; G

  2. # c/ S. }+ ?# J& y+ [5 m
  3. <else /> other Framework
    / `; Z3 Y9 r% L, O, N& k0 `
  4. $ {2 M2 [3 c' N9 y7 i
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    " Y0 _' D  r/ L

  2. ; ]. B" [* V6 N  L! R
  3. <else /> other Framework
    4 Q1 l) ^. C# Q# y1 Y) ~( E$ l9 ~1 Q  m

  4. 1 S: j# {- b0 H, h. y( e, `
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP- u- n/ u- U/ ]* e0 k
  2. ; @% p5 W# a, H' y0 R
  3. <else /> other Framework; W9 T# G: T# {6 d7 A5 _
  4. ! `* d  ]1 N$ V6 ]$ c; C: c/ p& w
  5. </if>
复制代码

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

  1. eq 等于(==)
    3 B% W3 ]/ r+ H' b: e8 t. m

  2. " c! H9 Z8 N& h2 k5 F7 }: V  A
  3. neq 不等于(!=)8 A0 M1 c# K2 @; r, s- q1 N
  4. + \4 A7 l$ u9 j' t: U! Q
  5. gt 大于(>)1 c. L1 d' [! `" |- S4 u

  6. 2 ~+ [7 i9 I) [. v
  7. egt 大于等于(>=)
    7 L" m; M  }( u2 Y' b

  8. - l4 ]' m  O% @- J- A& }6 P; {1 t
  9. lt 小于(<)
    2 l4 x( C! K  r# Q
  10. & V3 J  [+ _5 p0 N! z7 m7 Y
  11. elt 小于等于(<=)
    * d; ~6 c+ L. }# M2 f$ \

  12. 1 s4 p7 w0 _4 e# m0 Z
  13. heq 恒等于(===)
    1 a; }/ z8 Z( k6 q: |% E' m+ z5 q

  14. 8 Z4 W, H. e; }8 u' P
  15. nheq 不恒等于(!==)
复制代码


; P3 E/ l+ T) {0 o8 S  C

5 G% E" N- e* Y) C7 U8 A
注意9 `5 l3 {  w! v$ B
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。' j5 e* `3 l2 A. B& D
提示' J% ?$ A4 z! G. a
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
9 v6 L5 Q" D) R4 ~/ L& t2 T* Z如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。7 R; Y# }) J& t9 p* s1 H8 p
( c+ I7 j" s. ^3 v7 _( o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 00:00 , Processed in 0.052397 second(s), 20 queries .

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