2017-10-02 6 views
0

Cela doit être très simple. Mais j'ai du mal à bien faire les choses. J'ai un objet comme ci-dessous auquel j'essaye d'accéder en utilisant coldfusion. enter image description here. Mon objet comme montré ci-dessous est plus complexe que le message suggéré. Il a un tableau dans une structure à l'intérieur d'un tableau.Eléments d'accès Coldfusion Array

Je souhaite accéder à la valeur de structure Second Arrays, à savoir '123'. Je suis en mesure d'accéder à la première valeur de tableau qui est '456' en utilisant ci-dessous. Mais si je fais quelque chose comme ça pour accéder à la deuxième valeur, je deviens indéfini.

 <cfset arr_test_next = the_dump[y].CustomFields[2].values/> 
     <cfif ArrayIsDefined(arr_test_next , 2)> 
      <cfset args.type_next = arr_test_next [2]/> 
     <cfelse> 
      <cfset args.type_next = ''/> 
     </cfif> 
+0

Copie possible de [Impossible de générer un tableau simple?] (Https://stackoverflow.com/questions/46432318/cant-output-simple-array) –

+0

L'objet que j'ai est plus complexe que l'exemple auquel vous avez fait référence. Toutes les idées sur la façon d'accéder au tableau à l'intérieur de struct à l'intérieur d'un tableau. – user747291

+1

Essayez d'utiliser la table de hachage/l'objet de requête pour stocker ces résultats. C'est facile à manipuler et à visualiser. Vous pouvez également essayer le Ulf CFlib [QueryToArrayOfStructures] (http://www.cflib.org/udf/QueryToArrayOfStructures) – Anurag

Répondre

4

Je peux aider à mieux avec les données réelles, donc je l'ai essayé de reconstruire la structure ...

the_dump = [{ 
    'CustomFields': [{ 
     'FieldName': 'fn1', 
     'Fieldtype': 'ft1', 
     'Values': ['a','b','c'] 
    },{ 
     'FieldName': 'fn2', 
     'Fieldtype': 'ft2', 
     'Values': ['d','e','f'] 
    }] 
}]; 

Avec cela, un ...

writeDump(the_dump); 

Ça me donne ce ...

enter image description here

Et je peux accéder au deuxième réseau comme celui-ci sans problème ...

arr_test = the_dump[1].CustomFields[2].values; 
writeDump(arr_test); 

enter image description here

C'est essentiellement ce que vous avez, à l'exception possible de la variable y. Donc, je suppose que c'est là que le problème est.

De même, le passage d'un indice de 1 ou 2-ArrayIsDefined à la fois retour 'OUI' et ...

arr = the_dump[1].CustomFields; 
isarr = ArrayIsDefined(arr, 2); 
writeDump(isarr); // YES 

Pour référence, voici copie/code pasteable je à https://trycf.com

<cfscript> 
the_dump = [{ 
    'CustomFields': [{ 
     'FieldName': 'fn1', 
     'Fieldtype': 'ft1', 
     'Values': ['a','b','c'] 
    },{ 
     'FieldName': 'fn2', 
     'Fieldtype': 'ft2', 
     'Values': ['d','e','f'] 
    }] 
}]; 

writeDump(the_dump); 

arr_test = the_dump[1].CustomFields[2].values; 
writeDump(arr_test); 

arr = the_dump[1].CustomFields; 
isarr = ArrayIsDefined(arr, 2); 
writeDump(isarr); 

</cfscript> 
+0

Bien expliqué. Il y a plus d'une façon de manipuler de telles structures. – Anurag