遍历结构数组并输出特定的结构值?
Loop over array of structures and output specific struct value?
我有一组结构,我应该在其中访问特定字段。这是我的数据示例:
array
1
struct
address_city Washington
address_state DC
array
2
struct
address_city New York
address_state NY
array
3
struct
address_city Miami
address_state FL
我有这段代码循环遍历数组,然后在内部循环遍历结构:
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#key#:#data[key]#<br></cfoutput>
</cfloop>
</cfloop>
上面的代码将产生这个输出:
address_city:Washington
address_state:DC
address_city:New York
address_state:NY
address_city:Miami
address_state:FL
相反,我只需要访问 address_state
值。我试过这样的事情:
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#data[key]['address_state']#<br></cfoutput>
</cfloop>
</cfloop>
然后我收到此错误消息:
Message You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.
有没有办法只输出数组中每个结构的一个字段?遍历 JS 对象时,JavaScript 中可以进行类似的操作。示例:
for (var key in data) {
console.log(data[key]['address_state']);
}
如果有人知道在 ColdFusion 中实现此目的的方法,请告诉我。
有趣的是,有一种方法可以做到几乎与 JS 示例完全一样。
for (key in data) {
writeOutput( "Address State = " & key.address_state & "<br>");
}
https://trycf.com/gist/f0bd28bbf644912d320b10fdc5f526f4/acf?theme=monokai
您收到错误是因为您在不需要时引用了 data
数组。根据循环的性质,您已经在 data
中循环遍历 key
。在您的脚本示例中,您不需要对数组进行双循环。
我已经解决了你的问题,希望你能根据基于脚本的编码风格得到答案。但是正如您在上面的评论中所说,您需要基于标签的功能。所以这里我有 post 我的基于标签的功能。我希望它能帮助你。谢谢
<cfloop array ="#arrData#" index="data">
Address_State: #data.address_state# <br>
</cfloop>
我有一组结构,我应该在其中访问特定字段。这是我的数据示例:
array
1
struct
address_city Washington
address_state DC
array
2
struct
address_city New York
address_state NY
array
3
struct
address_city Miami
address_state FL
我有这段代码循环遍历数组,然后在内部循环遍历结构:
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#key#:#data[key]#<br></cfoutput>
</cfloop>
</cfloop>
上面的代码将产生这个输出:
address_city:Washington
address_state:DC
address_city:New York
address_state:NY
address_city:Miami
address_state:FL
相反,我只需要访问 address_state
值。我试过这样的事情:
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#data[key]['address_state']#<br></cfoutput>
</cfloop>
</cfloop>
然后我收到此错误消息:
Message You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.
有没有办法只输出数组中每个结构的一个字段?遍历 JS 对象时,JavaScript 中可以进行类似的操作。示例:
for (var key in data) {
console.log(data[key]['address_state']);
}
如果有人知道在 ColdFusion 中实现此目的的方法,请告诉我。
有趣的是,有一种方法可以做到几乎与 JS 示例完全一样。
for (key in data) {
writeOutput( "Address State = " & key.address_state & "<br>");
}
https://trycf.com/gist/f0bd28bbf644912d320b10fdc5f526f4/acf?theme=monokai
您收到错误是因为您在不需要时引用了 data
数组。根据循环的性质,您已经在 data
中循环遍历 key
。在您的脚本示例中,您不需要对数组进行双循环。
我已经解决了你的问题,希望你能根据基于脚本的编码风格得到答案。但是正如您在上面的评论中所说,您需要基于标签的功能。所以这里我有 post 我的基于标签的功能。我希望它能帮助你。谢谢
<cfloop array ="#arrData#" index="data">
Address_State: #data.address_state# <br>
</cfloop>