web-dev-qa-db-ja.com

Coldfusion-構造体の配列をループして、すべてのKEY値を動的に出力する方法は?

以下の構造の配列を与える:

enter image description here

次の手順を実行すると、すべてのフィールドからすべての値を出力できます。

    <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とは大きく異なります:-)

ご協力ありがとうございました

14
Max
<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/

22
Henry