访问元素Coldfusion数组

时间:2017-10-02 14:04:07

标签: coldfusion

这一定非常简单。但我很难把它弄好。我有一个对象如下,我试图使用coldfusion访问。 enter image description here。我在下面显示的对象比建议的帖子更复杂。它在数组中的结构中有数组。

我想访问第二个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>

1 个答案:

答案 0 :(得分:4)

我可以更好地处理实际数据,所以我试图重建你的结构......

the_dump = [{
    'CustomFields': [{
        'FieldName': 'fn1',
        'Fieldtype': 'ft1',
        'Values': ['a','b','c']
    },{
        'FieldName': 'fn2',
        'Fieldtype': 'ft2',
        'Values': ['d','e','f']   
    }]
}];

有了这个,......

writeDump(the_dump);

给我这个......

enter image description here

我可以像这样访问第二个阵列没问题......

arr_test = the_dump[1].CustomFields[2].values;
writeDump(arr_test);

enter image description here

这基本上就是你所拥有的,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>