【问题标题】:Coldfusion - How to loop through an Array of Structure and print out dynamically all KEY values?Coldfusion - 如何循环遍历结构数组并动态打印出所有键值?
【发布时间】:2013-11-01 01:36:53
【问题描述】:

给出下面的结构数组:

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

    <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

现在我正在尝试遍历所有字段,这样我就不必实际编写 每个字段的名称。我如何动态地做到这一点? 比如:

    <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>

我不是 ColdFusion 人,只是帮助朋友,ColdFusion 的语法与 .Net 非常不同 :-)

感谢您的帮助

【问题讨论】:

  • 我对这个问题的投票应该会让您的声誉达到 3 位数。你欠我一杯啤酒。

标签: arrays coldfusion structure coldfusion-8


【解决方案1】:
<cfloop from="1" to="#arrayLen(ApiData)#" index="i">
  <cfset data = ApiData[i]>
  <cfloop collection="#data#" item="key">
    #key#:#data[key]#
  </cfloop> 
</cfloop>

或者你可以使用CFScript,应该更容易上手。

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

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

【讨论】:

  • @Max - 由于您没有提及 CF 版本,请注意带有 arrays 的 for-in-loops 需要 CF9.0.1+。
  • 那行不通。您的解决方案似乎适用于单个结构。请记住,我必须遍历一个结构数组。我尝试通过执行以下操作访问数组的第一个结构: #key#:#ApiData[key]# 我正在使用 CF 8 顺便说一句 - 谢谢
  • 我改为: 并且它确实有效。现在我所需要的就是让它充满活力 - 谢谢!
  • @Max 嗯,抱歉不知道你还在 CF8 中。我已经更新了 CFML 答案,它应该适合你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2011-10-07
  • 1970-01-01
  • 2018-06-27
相关资源
最近更新 更多