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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
( P! T  p8 y8 ]/ G6 o, @" E/ _6 |
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1  p+ k' X' C5 i7 w  A' b

  2. ( M8 S6 U; v/ v: o. D
  3. <elseif condition="$name eq 2" />value2  n( `4 m' o7 H6 A$ S/ H' J

  4. 0 q  ^6 a  \7 ^7 k! B2 {2 [# I
  5. <else /> value3
    ; t3 D7 Z  v4 P4 J. r' C- a

  6. ! P2 m- h. {+ Z& Z; s+ [3 j
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:7 A( l& h2 k: S3 [4 f2 ^
  1. <if condition="$id < 5 "> value1* }: y9 W* ^5 Z' I5 {, {
  2. & n/ }! O) Q9 Y$ H/ o$ |7 D
  3. <else /> value2$ ^1 y) ]/ F* s6 H. X/ [3 ?7 c
  4. + @/ n6 g0 Q& ?2 n. |5 J$ B
  5. </if>
复制代码
必须改成:1 @: D$ s  v0 h- b4 |
  1. <if condition="$id lt 5 "> value1: D) J1 C$ p! ]8 b- Z4 ~

  2.   Q1 \# O# D# @% S
  3. <else /> value2# U; Y% |. K5 O* X7 g" ]
  4. $ b8 L7 B' E, W' O# z6 A! f) r5 d
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
4 Z! k7 N; q, I  ]
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP; P; q" L! ]1 G8 m# i/ D

  2. ! |: X$ H4 N# c; [; m
  3. <else /> other Framework
    2 {% c2 ~1 k5 \; R# M! p3 `
  4. + w2 H1 |; z! Z& w" s" L, `* d
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP6 \+ A: l: ~- P( H& y) E  n  @

  2. 9 z0 D" I2 D2 f  O
  3. <else /> other Framework
    ) T- z! {& B) t$ l8 e

  4. # z2 I0 i5 Y! `. j8 n- B
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    " c) o8 S; C3 I$ k( y9 w" S

  2. 6 `8 b" ^6 S* Z, ^6 |/ {; u/ {
  3. <else /> other Framework. v2 I/ O" M0 ~# k
  4. $ l" C( W) ~- Z1 C/ G
  5. </if>
复制代码

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

  1. eq 等于(==)5 L* e, ^% l6 D8 h( x" v
  2. 3 H6 q, W4 o3 A* |6 e) U2 E8 t
  3. neq 不等于(!=)7 Q3 G- y" g- g5 u7 K7 t
  4. 8 j. z4 y- S/ G5 ~; F% l- u
  5. gt 大于(>)
    % e4 G5 R4 g6 Q& ^9 W* l
  6. # Z) R, \: U8 g8 R! o; i
  7. egt 大于等于(>=)7 L0 }: D" D8 m

  8. 3 B8 f4 ]3 H0 ?& _3 f9 M
  9. lt 小于(<); X) P0 \- F# j: E" D

  10. / A0 r8 R/ D- L% r6 a
  11. elt 小于等于(<=)4 d9 E; Z- b# [& ]

  12. ; x6 z6 t8 y  C; |/ v
  13. heq 恒等于(===)$ D5 B" }$ Z; x2 g: p
  14. 5 _" R% e+ S4 X* v  v
  15. nheq 不恒等于(!==)
复制代码

  t3 ~# g9 c; e- j# c' ^


9 b3 }. Q  S# j" }: e5 J注意
3 ?, b4 w4 ^0 _condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。  J5 Y1 o% K+ `4 @/ l/ z
提示6 E* z- I9 |8 H' I: v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
0 Q- a" h2 E+ L8 B5 b4 e' V& A& N如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
6 t1 m- {# T, B# J8 A: `( T1 n% N$ t5 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:18 , Processed in 0.064557 second(s), 19 queries .

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