1. 关于变量名称
    1. 特殊: 关于井号#的使用
  2. Loop
    1. Basic Loop
    2. Loop for List
    3. Query 循环
    4. Structure 循环
  3. 数组与转储
    1. 示例
    2. 用法
  4. 流程控制
    1. 条件判断 cfif
    2. cfswitch
    3. CFML 计算操作符
    4. CFML 逻辑运算符
  5. 字符串
    1. [待补充]特殊符号的使用
  6. 运算符
    1. 求余数

关于变量名称

  1. 不能用数字开始
  2. 不能包含空格
  3. 不能使用除去下滑线以外的特殊符号
  4. 大小写不敏感

特殊: 关于井号#的使用

标记函数和变量的时候需要用到井号 输入两个连续的井号(##)就表示一个单个井号(#)

Loop

Basic Loop

Syntax

<cfloop index="parameter name" from="beginning value" to="ending value" step="increment" charset "charset to read in a file">
  HTML or CFML code ……
</cfloop>

Examples

<cfloop from="1" to="10" step="2" index="i">
  <cfoutput>
    <li>#i#</li>
  </cfoutput>
</cfloop>

break

<cfbreak>

Loop for List

<cfset test="aaa,bbb,ccc,ddd">

  <cfloop list="#test#" index="i">
    <cfoutput>
      #i#
    </cfoutput>
  </cfloop>

在 loop 中使用其他列表的时候需要加上对应的井号 #test# 希望输出列表内容的时候直接使用 index 参数就可以了

另一种可以获取到 index 的循环模式:

<cfset list="Partner,Response Date,Response Status" />
<cfloop from="1" to="#listLen(list)#" index="i">
  <cfoutput>
    listGetAt(list, i)
  </cfoutput>
</cfloop>

Query 循环

Syntax

<cfloop  
    query = "query name" 
    startRow = "row number" 
    endRow = "row number"> 
</cfloop>

Example

从 cc_TEST 表中搜索前十个数据, 放到 TEST 的 <cfQuery> 之中

几个需要注意的地方:

  • 循环里面直接使用对应的列名就可以
  • <cfloop query="TEST"> 的 query 属性中不需要添加井号
  • <cfloop> 内部语句需要使用 <cfoutput> 进行转换, <cfoutput> 可以放在外层以减少使用次数
<cfquery name="query" datasource="cc_query" result="result">
  SELECT TOP(10) * FROM SITE
</cfquery>
<cfdump var="#query#" />

<cfloop query="query">
  <cfoutput>
    #query.CurrentRow# #ADMIN#
  </cfoutput>
</cfloop>

<cfoutput>
  #result.sql#
</cfoutput>

此外还可以直接使用 <cfoutput> 的 Query 属性来输出 同样直接使用对应的列名

<cfoutput query="query">
  #ADMIN#
</cfoutput>

Structure 循环

Syntax

<cfset myBooks=StructNew()>
<cfset myVariable=StructInsert(myBooks,"ColdFusion","ColdFusion MX Bible")>
<cfset myVariable=StructInsert(myBooks,"HTML","HTML Visual QuickStart")>
<cfset myVariable=StructInsert(myBooks,"XML","Inside XML")>
<cfloop collection="#myBooks#" item="subject">
<cfoutput>
<b>#subject#:</b> #StructFind(myBooks,subject)#<br />
</cfoutput>
</cfloop>

显示结果:

HTML: HTML Visual QuickStart
ColdFusion: ColdFusion MX Bible
XML: Inside XML

Attributes

  • query

Required Query that controls the loop.

  • startRow
  • endRow

API

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html

数组与转储

示例

<cfset names=ArrayNew(2)>

<cfset names[1][1]="test">
<cfset names[1][2]="test123">
<cfset names[2][1]="test4343">
<cfset names[2][2]="test1235454">
<cfset names[3][1]="43">
<cfset names[3][2]="123">

用法

  • ArrayNew()

表示建立一位数组

  • ArrayNew(X)

表示建立 X 维数组, 随后赋值的数据必须有 X 个 index

<cfset names=ArrayNew(3)>
<cfset names[1][1][1]="test">
<cfset names[1][2][2]="test123">
<cfset names[3][2][5]="43">
<cfset names[4][2][4]="42">
  • 使用 <cfdump> 标签可以查看对应的变量的数据
<cfdump var="#names#">

流程控制

条件判断 cfif

<cfif (#i#+#j# IS 10)>
  do sth……
  <cfelse>
    do sth else……
</cfif>

cfswitch

<cfswitch expression="#Trim(Department)#">
  <cfcase value="Sales">
    #FirstName# #LastName# is in <b>sales</b>
  </cfcase>
  <cfcase value="Accounting">
    #FirstName# #LastName# is in <b>accounting</b>
  </cfcase>
  <cfcase value="Administration">
    #FirstName# #LastName# is in <b>administration</b>
  </cfcase>
  <cfdefaultcase>
    #FirstName# #LastName# is not in Sales, Accounting, or
    Administration.
  </cfdefaultcase>
</cfswitch>
switch(fruit) {
    case "apple":
         WriteOutput("I like Apples");
         break;
    case "orange":
         WriteOutput("I like Oranges");
         break;
    default: 
         WriteOutput("I like fruit");
}

CFML 计算操作符

  • IS/EQ: equal to
  • IS NOT/NEQ: not equal to
  • GT: greater than, bigger than
  • GTE: greater then or equal to
  • LT: less than
  • LTE: less than or equal to

CFML 逻辑运算符

  • AND
  • PR
  • XOR: 异或, 其一为 true 而不能同时为 true
  • EQV: 等价, 两个条件相同时返回 true
  • IMP: 蕴含, 第一个条件为 true, 第二个条件为 false 返回 false
  • NOT

字符串

[待补充]特殊符号的使用

例如使用单引号

<cfset URL.customGroupSitesExtraSQL = customGroupSitesExtraSQL & "'#SiteID#'"/>

运算符

求余数

MOD or %

注意余数运算的时候小数部分会被忽略:

11.7 MOD 4 = 3