Referencing complex structures
When a structure contains another structure, you reference
the data in the nested structure by extending either object.property
or associative array notation. You can even use a mixture of both
notations.
For example, if structure1 has a key key1 whose value is a structure
that has keys struct2key1, struct2key2, and so on, you can use any
of the following references to access the data in the first key
of the embedded structure:
Structure1.key1.Struct2key1
Structure1["key1"].Struct2key1
Structure1.key1["Struct2key1"]
Structure1["key1"]["Struct2key1"]
The following example shows various ways you can reference the
contents of a complex structure:
<cfset myArray=ArrayNew(1)>
<cfset myArray[1]="2">
<cfset myArray[2]="3">
<cfset myStruct2=StructNew()>
<cfset myStruct2.struct2key1="4">
<cfset myStruct2.struct2key2="5">
<cfset myStruct=StructNew()>
<cfset myStruct.key1="1">
<cfset myStruct.key2=myArray>
<cfset myStruct.key3=myStruct2>
<cfdump var=#myStruct#><br>
<cfset key1Var="key1">
<cfset key2Var="key2">
<cfset key3Var="key3">
<cfset var2="2">
<cfoutput>
Value of the first key<br>
#mystruct.key1#<br>
#mystruct["key1"]#<br>
#mystruct[key1Var]#<br>
<br>
Value of the second entry in the key2 array<br>
#myStruct.key2[2]#<br>
#myStruct["key2"][2]#<br>
#myStruct[key2Var][2]#<br>
#myStruct[key2Var][var2]#<br>
<br>
Value of the struct2key2 entry in the key3 structure<br>
#myStruct.key3.struct2key2#<br>
#myStruct["key3"]["struct2key2"]#<br>
#myStruct[key3Var]["struct2key2"]#<br>
#myStruct.key3["struct2key2"]#<br>
#myStruct["key3"].struct2key2#<br>
<br>
</cfoutput>
Reviewing the code
The following table
describes the code:
Code
|
Description
|
<cfset myArray=ArrayNew(1)>
<cfset myArray[1]="2">
<cfset myArray[2]="3">
<cfset myStruct2=StructNew()>
<cfset myStruct2.struct2key1="4">
<cfset myStruct2.struct2key2="5">
<cfset myStruct=StructNew()>
<cfset myStruct.key1="1">
<cfset myStruct.key2=myArray>
<cfset myStruct.key3=myStruct2>
|
Create a structure with three entries: a
string, an array, and an embedded structure.
|
<cfdump var=#myStruct#><br>
|
Display the complete structure.
|
<cfset key1Var="key1">
<cfset key2Var="key2">
<cfset key3Var="key3">
|
Create variables containing the names of
the myStruct keys and the number 2.
|
<cfoutput>
Value of the first key<br>
#mystruct.key1#<br>
#mystruct["key1"]#<br>
#mystruct[key1Var]#<br>
<br>
|
Output the value of the key1 (string) entry
using the following notation:
|
<br>
Value of the second entry in the key2 array<br>
#myStruct.key2[2]#<br>
#myStruct["key2"][2]#<br>
#myStruct[key2Var][2]#<br>
#myStruct[key2Var][var2]#<br>
<br>
|
Output the value of the second entry in
the key2 array using the following notation:
object.property
notation
associative array notation with a constant
associative array notation with a variable
associative array notation with variables for both the array
and the array index
|
Value of the struct2key2 entry in the key3 structure<br>
#myStruct.key3.struct2key2#<br>
#myStruct["key3"]["struct2key2"]#<br>
#myStruct[key3Var]["struct2key2"]#<br>
#myStruct.key3["struct2key2"]#<br>
#myStruct["key3"].struct2key2#<br>
<br>
|
Output the value of second entry in the
key3 embedded structure using the following notation:
object.property notation
associative array notation with two constants
associative array notation with a variable and a constant
object.property notation followed by associative array notation
associative array notation followed by object.property notation
|