这一定非常简单。但我很难把它弄好。我有一个对象如下,我试图使用coldfusion访问。 。我在下面显示的对象比建议的帖子更复杂。它在数组中的结构中有数组。
我想访问第二个Arrays结构值,即' 123'。我能够访问第一个数组值,即' 456'使用下面。
<cfset arr_test = the_dump[y].CustomFields[1].values/>
<cfif ArrayIsDefined(arr_test , 1)>
<cfset args.type = arr_test [1]/>
<cfelse>
<cfset args.type = ''/>
</cfif>
但如果我做这样的事情来访问第二个值,我会得到未定义的。
<cfset arr_test_next = the_dump[y].CustomFields[2].values/>
<cfif ArrayIsDefined(arr_test_next , 2)>
<cfset args.type_next = arr_test_next [2]/>
<cfelse>
<cfset args.type_next = ''/>
</cfif>
答案 0 :(得分:4)
我可以更好地处理实际数据,所以我试图重建你的结构......
the_dump = [{
'CustomFields': [{
'FieldName': 'fn1',
'Fieldtype': 'ft1',
'Values': ['a','b','c']
},{
'FieldName': 'fn2',
'Fieldtype': 'ft2',
'Values': ['d','e','f']
}]
}];
有了这个,......
writeDump(the_dump);
给我这个......
我可以像这样访问第二个阵列没问题......
arr_test = the_dump[1].CustomFields[2].values;
writeDump(arr_test);
这基本上就是你所拥有的,y
变量可能例外。所以我的猜测就是问题所在。
同样,将索引1或2传递给ArrayIsDefined
也都会返回'YES'...
arr = the_dump[1].CustomFields;
isarr = ArrayIsDefined(arr, 2);
writeDump(isarr); // YES
供参考,这是我在https://trycf.com
使用的复制/可粘贴代码<cfscript>
the_dump = [{
'CustomFields': [{
'FieldName': 'fn1',
'Fieldtype': 'ft1',
'Values': ['a','b','c']
},{
'FieldName': 'fn2',
'Fieldtype': 'ft2',
'Values': ['d','e','f']
}]
}];
writeDump(the_dump);
arr_test = the_dump[1].CustomFields[2].values;
writeDump(arr_test);
arr = the_dump[1].CustomFields;
isarr = ArrayIsDefined(arr, 2);
writeDump(isarr);
</cfscript>