2017-10-02 11 views
0

これは非常に単純なものでなければなりません。しかし、私はそれを正しくするのに苦労している。私はcoldfusionを使ってアクセスしようとしている以下のオブジェクトを持っています。 enter image description here。以下のような私のオブジェクトは、提案された投稿より複雑です。それは配列内の構造体に配列を持っています。アクセスエレメントColdfusion Array

「123」の2番目の配列の構造体値にアクセスしたいとします。私は最初の配列値 '456'にアクセスすることができます。

 <cfset arr_test = the_dump[y].CustomFields[1].values/> 
     <cfif ArrayIsDefined(arr_test , 1)> 
      <cfset args.type = arr_test [1]/> 
     <cfelse> 
      <cfset args.type = ''/> 
     </cfif> 

しかし、私は未定義得る第二の値にアクセスするには、このような何かを行う場合。

 <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

で使用pasteableコードです"単純な配列を出力できませんか?"(https://stackoverflow.com/questions/46432318/cant-output-simple-array) –

+0

私が持っているオブジェクトは、あなたが参照した例よりも複雑です。構造体内部の配列にアクセスする方法に関するアイディア – user747291

+1

ハッシュテーブル/クエリオブジェクトを使用してそのような結果を保存してみてください。それは容易に手渡し、視覚化することができます。また、CFlib UDF [QueryToArrayOfStructures](http://www.cflib.org/udf/QueryToArrayOfStructures) – Anurag

答えて

4

私は、実際のデータとのより良いことができますので、私はあなたの構造を再構築しようとした...それと

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

、...

writeDump(the_dump); 

は私を与えますこの...

enter image description here

そして、私はこの問題はないように二番目の配列にアクセスすることができます...

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

enter image description here

これは、あなたが y変数の可能性を除いて、基本的に持っているものです。だから、私の推測は問題がどこにあるのかです。

同様に、リターン 'YES' も両方ArrayIsDefinedに1又は2のインデックスを通る...参考

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

は、ここにコピー/ Iは、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

を試してみることもできます。しかし、このような構造を操作する方法は複数あります。 – Anurag

関連する問題