2013-11-01 13 views
11

das Array der Struktur geben unter:Coldfusion - Wie man ein Array von Struktur durchläuft und alle KEY-Werte dynamisch ausdruckt?

enter image description here

Ich bin in der Lage, alle Werte aus allen Bereichen zu drucken, indem Sie:

<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 

nun so durch alle Felder Schleife Ich versuche, dass Ich muss nicht wirklich den Namen jedes Feldes schreiben. Wie mache ich das dynamisch? Etwas wie:

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

Ich bin kein Coldfusion Kerl, nur ein Kumpel und die Coldfusion-Syntax hilft von .Net :-) sehr unterschiedlich ist

Danke für Ihre Hilfe

+2

Meine Abstimmung über diese Frage sollte Ihren guten Ruf in 3 Ziffern erhalten. Du schuldest mir ein Bier. –

Antwort

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

Oder Sie können CFScript verwenden, das viel einfacher zu erlernen sein sollte.

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

Verwendung dieser Link: http://www.learncfinaweek.com/week1/Looping/

+0

@Max - Da Sie die CF-Version nicht erwähnt haben, beachten Sie, dass For-In-Schleifen mit * Arrays * CF9.0.1 + erfordern. – Leigh

+0

Das hat nicht funktioniert. Es scheint, dass Ihre Lösung für eine einzelne Struktur gilt. Denken Sie daran, ich muss durch ein Array von Strukturen durchlaufen. Ich habe versucht, die erste Struktur des Array zugreifen, indem Sie die folgenden Schritte aus: \t \t \t \t \t \t \t \t #key #: # ApiData [ key] # \t \t \t I CF bin mit 8 durch die Art und Weise - dank – Max

+0

ich geändert: und es tatsächlich funktioniert. Jetzt brauche ich nur noch Dynamik - Danke! – Max