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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
, ~2 l' b3 j! t
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ! s9 N* h% l6 z) q

  2. 1 L  }4 m$ Q+ s/ z! V
  3. <elseif condition="$name eq 2" />value2" T. z. v# O" t/ O. e6 I4 h

  4. * I8 c! B, W$ D
  5. <else /> value3
    3 T4 W3 N0 X9 {$ h' x
  6. ; h7 N# Y; G/ Q2 q0 ]4 x
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:2 i! S( L/ t$ h7 h
  1. <if condition="$id < 5 "> value1
    # u0 H( p% [# O2 ?- c
  2. 9 k" V: L/ S/ w
  3. <else /> value27 `7 m  t, t) t
  4. ' J2 s* A9 ~: h3 i; p; `: m
  5. </if>
复制代码
必须改成:5 a; v: c. [- S! q7 m
  1. <if condition="$id lt 5 "> value1" Z. W5 `( \* u% p; {% h! \

  2. 6 I: S* i  ?1 Z1 ^, }4 t
  3. <else /> value22 M" w3 M+ K5 J1 T/ e. H. t) T9 B
  4. 1 z( c' I; W8 m9 S
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:" S# H0 l+ K; \" |% W
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP& y8 g9 \- k$ w/ P9 H0 S
  2. $ B. m- a: e( N
  3. <else /> other Framework
    " t5 e1 X0 @$ q. ^& b

  4. 4 s1 \7 S5 O; v) Y
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    - _' D  s- \) Q1 g' f7 D

  2. + ]. \& ^+ @' [- S
  3. <else /> other Framework
    " P( ]3 [# [; Z0 H' B- C3 V
  4. ! O: _$ s; Q3 H3 P! E
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& n& t5 ~6 N1 O7 q
  2. 8 v! _* j# C$ O4 e: @: h+ v3 q
  3. <else /> other Framework* y# `$ s, L& _6 K6 J( t( Y
  4. " v) I. L( V4 M3 I
  5. </if>
复制代码

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

  1. eq 等于(==)' r! `# k" ?# y0 q2 Y& _8 M7 ?

  2. 6 q/ x" J# e# @' {9 O% _
  3. neq 不等于(!=)
    : G7 Q  [2 Z9 j1 d

  4. 2 f0 h6 v; L- U8 W1 p% ?
  5. gt 大于(>)0 a4 m2 d' A7 Z& S" K

  6. : Z1 z0 j; O7 _6 Q' \' O
  7. egt 大于等于(>=)
    : G' Z, V0 o7 K# f
  8. * Y+ }" D+ N' w$ v7 q/ V! }
  9. lt 小于(<)- k4 o! F' J" C; J8 K1 y
  10. : |) y# [7 s. ^, r# }
  11. elt 小于等于(<=)
    8 K% }  K6 G1 H2 I" p3 l

  12. . ?1 R- U+ V5 L" z, g! M
  13. heq 恒等于(===)
    2 ]4 p: G4 |0 p& D& t& E7 T) P) B
  14. - `) s/ F" q( s4 h2 W( L2 \) L
  15. nheq 不恒等于(!==)
复制代码


$ l- f7 j) H/ Y6 _! r

% O/ \4 _' U  T/ \; C) I
注意5 v+ S/ q: b( `3 ?! Y9 G
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
1 s, E7 ]. K# g" N提示5 V. U& V- d7 ~, |6 G
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
( D: W( W# ~/ E: ~7 I: N0 q8 A如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
& q) R& z9 U5 r. G$ ]  W/ w) V1 ]6 t) P+ ?" }4 X& |# z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:48 , Processed in 0.068018 second(s), 20 queries .

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