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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:# @! N1 g9 }. N
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ( Q2 m2 s" ^. D1 I" @. S9 P

  2. 9 g( U0 i2 p9 Q3 L: j/ x1 K" {
  3. <elseif condition="$name eq 2" />value2
    % t/ s$ B2 A8 ^$ t5 z2 }; x
  4. 2 q5 J0 n/ g" \, a3 [0 c# U
  5. <else /> value3) Y1 P9 ]6 l- Y7 a

  6. 3 x9 m1 T9 T! C0 [1 \3 y
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:# Z3 U. j8 ]" U
  1. <if condition="$id < 5 "> value19 K+ @$ H. y# T) D! b! H
  2. ) U% I1 o! a3 A4 ]) f1 f
  3. <else /> value2: j' m+ h1 B* o' h3 }

  4. 8 M9 V9 g% |4 H/ B, }4 t
  5. </if>
复制代码
必须改成:+ [# R4 R5 {" G/ ?" f
  1. <if condition="$id lt 5 "> value1
    6 R! Y2 Y& D8 L! A
  2. % T* E0 P5 P( U& M; C5 U2 Y, a
  3. <else /> value2
    / |/ u( ^! j6 A- N4 e

  4. , }( L7 c4 ~1 _  n% O( r
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
% G5 K' r: ~- p1 |( t' h
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP7 O  C% e7 |. V. r3 Q
  2. * I, Z' i3 D5 ^% D0 E
  3. <else /> other Framework
    . L( t2 h2 |" k% P1 P- W8 {

  4. . r- |& L# x9 Q* V
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- z- p3 ?0 B) p* y" i; q6 {

  2. , x* x) n, x7 h1 H: ^& N6 x) X
  3. <else /> other Framework. P! Z7 e6 Z( l" A/ c
  4. ) G5 o3 R$ q% i: K/ |" t
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    # T& o, @5 V  p

  2. . r) o! f7 l) B4 r
  3. <else /> other Framework
    1 N+ g0 U0 P; Y! `7 @
  4. " o7 V0 o  `" Q4 C) o
  5. </if>
复制代码

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

  1. eq 等于(==)2 @* f) `7 X& |# w: O! I

  2. 7 g' w3 U& i1 b7 X5 h
  3. neq 不等于(!=)$ n: ^; d& ?  o

  4. 2 ^8 T" g8 _  _" t7 o
  5. gt 大于(>)7 u! p0 l2 k) [2 P9 ^

  6. # N, S1 z7 M! a3 @# N. x7 f3 o9 ?
  7. egt 大于等于(>=)( m4 s# `8 Z, w
  8. ! U. h. h5 _' D- y3 d  k/ r
  9. lt 小于(<)" n: m2 P7 e: }( {$ D. ^1 D
  10. ( V# ~: l5 S: z* w2 g
  11. elt 小于等于(<=)
    ) s0 Y8 _7 n" c

  12. ! A9 W' t7 n; P) g% I0 ~, P, `& `
  13. heq 恒等于(===)
    ( T/ ]; ~8 @# `" U, [; N' \2 |

  14. # w  X8 b& U, Y) T& O
  15. nheq 不恒等于(!==)
复制代码


2 U  B; Z; {/ E# C* ^! H

! ?' B, l! W. \+ X. o- b8 b
注意- K8 [, _* r/ T' p, @, m; a8 I
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。6 G& N1 B5 w) _; J" s& v3 @  E5 D
提示( i. X+ P6 {+ I& o/ q7 U
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。  E5 C; T6 t' a! n! o) e0 K  F
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。2 i( d; u% d* Y. I! h& v) z

" }% T3 B! d5 |5 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:42 , Processed in 0.063934 second(s), 19 queries .

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