2013-11-01 9 views
11

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の男ではないよ

+2

私の投票は3桁にあなたの評判を取得する必要があります。あなたは私にビールを借りています。 –

答えて

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

+0

@Max - CF版については言及していないので、*配列*を持つfor-in-loopsにはCF9.0.1 +が必要であることに注意してください。 – Leigh

+0

それは動作しませんでした。あなたのソリューションは単一の構造に適用されるようです。 構造体の配列をループする必要があることを忘れないでください。 私は次の操作を行って、配列の最初の構造にアクセスしようとした: \t \t \t \t \t \t \t \t #key番号:#1 ApiData [キー]# \t \t \t 私は途中でCF 8を使用しています - 感謝 – Max

+0

は、私のように変更:<にcfdump VAR = "#ApiData [1]、[キー]#">、それが実際に働きました。今私が必要とするのは、それを動的にすることです - ありがとう! – Max

関連する問題