User Guide

Table Of Contents
56 Chapter 3: Using ColdFusion Variables
Similarly, the following lines print the name "marjorie", the value of the second row in the
column:
<cfset myCol = myQuery["Firstname"]>
<cfoutput>#mycol[2]#</cfoutput><br>
However, when you make an assignment that requires a simple value, ColdFusion automatically
converts the query column to the value of the first row. For example, the following lines display
the name "ben" twice:
<cfoutput> #myQuery.Firstname# </cfoutput><br>
<cfset myVar= myQuery['Firstname']>
<cfoutput> #myVar# </cfoutput><br>
Using periods in variable references
ColdFusion uses the period (.) to separate elements of a complex variable such as a structure,
query, XML document object, or external object, as in MyStruct.KeyName. A period also
separates a variable scope identifier from the variable name, as in Variables.myVariable or
CGI.HTTP_COOKIE.
With the exception of Cookie and Client scope variables, which must always be simple variable
types, you cannot normally include periods in simple variable names. However, ColdFusion
makes some exceptions that accommodate legacy and third-party code that does not conform to
this requirement.
For more information, see About scopes” on page 64, Chapter 5, “Using Arrays and Structures,
on page 97, and Chapter 35, “Using XML and WDDX,” on page 843.
Understanding variables and periods
The following descriptions use a sample variable named MyVar.a.b to explain how ColdFusion
uses periods when getting and setting the variable value.
Getting a variable
ColdFusion can correctly get variable values even if the variable name includes a period. For
example, the following set of steps shows how ColdFusion gets MyVar.a.b, as in
<cfset Var2 =
myVar.a.b>
or IsDefined(myVar.a.b):
1.
Looks for myVar in an internal table of names (the symbol table).
2.
If myVar is the name of a complex object, including a scope, looks for an element named a in
the object.
If myVar is not the name of a complex object, checks whether myVar.a is the name of a
complex object and skips step 3.
3.
If myVar is the name of a complex object, checks whether a is a complex object.