关于变量名称

  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