ColdFusion如何在同一cfloop循环中同时输出数组索引与结构体数据
问题说明
存储结构体的CFML数组,拆分为两个独立循环时可分别输出数组索引、对应结构体数据,无法在单循环内同时获取两类信息。
原有测试代码分别实现了:
- 单循环遍历输出结构体字段内容
- 单循环遍历输出数组索引序号
错误原因
cfloop遍历数组时属性作用容易混淆:
- 仅指定
index属性时,该属性接收的是当前遍历到的数组元素本身,不是数组索引 - 同时指定
item和index属性时,item接收当前数组元素,index才接收对应的数组索引序号
原有第二个循环虽然同时声明了两个属性,但仅输出了索引变量,没有调用存储结构体的元素变量,因此需要拆分循环实现需求。
实现代码
单循环同时输出索引和结构体数据的写法如下,直接在cfloop标签中同时声明item和index属性即可:
<!--- 结构体、数组初始化逻辑与原有代码一致 ---> <cfset structRe = StructNew() /> <cfset structRe.id = "14"> <cfset structRe.title = "Title"> <cfset arryRe = ArrayNew(1) /> <cfset ArrayAppend(arryRe, structRe)> <cfoutput> <cfdump var="#arryRe#" /> </cfoutput> <!--- 单循环同时获取索引和结构体数据 ---> <cfloop array="#arryRe#" item="item" index="i"> <cfoutput> 数组索引:#i# <br /> 结构体id:#item.id# <br /> 结构体title:#item.title# <br /> </cfoutput> </cfloop>
注意:CFML原生数组下标从1开始计数,输出的索引值符合ColdFusion的数组规则。
内容的提问来源于stack exchange,提问作者Nich
相关产品推荐
相关产品推荐

