2013-11-01 20 views
11

Nadanie tablicy Structure poniżej:Coldfusion - jak przechodzić przez Array of Structure i drukować dynamicznie wszystkie wartości KEY?

enter image description here

jestem w stanie wydrukować wszystkie wartości ze wszystkich pól, wykonując:

<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 

Teraz próbuję pętli wszystkich dziedzinach, tak że Nie muszę już pisać nazwy każdego pola. Jak zrobić to dynamicznie? Coś jak:

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

Nie jestem ColdFusion facet, tylko pomaga kumpel i składnia ColdFusion jest bardzo odmienna od Net :-)

Dziękuję za pomoc

+2

Mój głos w tej sprawie powinien dostać swoją reputację na 3 cyfr. Jesteś mi winien piwo. –

Odpowiedz

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

Lub możesz użyć CFScript, który powinien być znacznie łatwiejszy do pobrania.

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

Użyj tego linku: http://www.learncfinaweek.com/week1/Looping/

+0

@Max - Ponieważ nie wspominałeś o wersji CF, pamiętaj, że pętle for-in-loop z * tablicami * wymagają CF9.0.1 +. – Leigh

+0

To nie zadziałało. Wygląda na to, że twoje rozwiązanie dotyczy jednej struktury. Pamiętaj, że muszę przechodzić przez Array of Structures. Próbowałem dostępu pierwszą strukturę tablicy, wykonując następujące czynności: \t \t \t \t \t \t \t \t #key #: # ApiData [ key] # \t \t \t używam CF 8 na drodze - dzięki – Max

+0

zmieniłem na: i to rzeczywiście działa. Teraz wszystko, czego potrzebuję, to uczynić go dynamicznym - dziękuję! – Max