Coldfusion - 如何遍历结构数组并动态打印出所有KEY值?

Max*_*Max 14 arrays coldfusion structure coldfusion-8

给出下面的结构数组:

在此输入图像描述

我可以通过以下方式打印出所有字段中的所有值:

    <cfset ColumnNames  = structKeyArray(ApiData[1])>                       
    <cfset ColumnLength = ArrayLen(ColumnNames)>    

    <cfloop from="1" to="#ArrayLen(ApiData)#" index="i">            
       <cfdump var="#ApiData[i].Created#">              
       <cfdump var="#ApiData[i].Name#">
               ...and so on
Run Code Online (Sandbox Code Playgroud)

现在我试图遍历所有字段,这样我就不必实际写出每个字段的名称.我该如何动态执行此操作?就像是:

    <cfloop from="1" to="#ArrayLen(ApiData)#" index="i">    
      <cfloop from="1" to="#ColumnLength#" index="i">
              <!---<cfdump var="#ApiData[i]." + "#ColumnNames[i]#" + "#">--->
              <!---<cfdump var="#ApiData[i].ColumnNames[i]#">--->
      </cfloop>
    </cfloop>
Run Code Online (Sandbox Code Playgroud)

我不是ColdFusion的人,只是帮助一个伙伴和ColdFusion语法与.Net非常不同:-)

谢谢您的帮助

Hen*_*nry 22

<cfloop from="1" to="#arrayLen(ApiData)#" index="i">
  <cfset data = ApiData[i]>
  <cfloop collection="#data#" item="key">
    #key#:#data[key]#
  </cfloop> 
</cfloop>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用CFScript,这应该更容易上手.

for (d in ApiData)  // for-in loop for array
{
  for (key in d)  // for-in loop for struct
  {
     writeOutput(key & ":" & d[key]);
  }
}
Run Code Online (Sandbox Code Playgroud)

使用此链接:http://www.learncfinaweek.com/week1/Looping/