特定のフィールドにアクセスする必要がある構造の配列があります。これが私のデータの例です:
array
1
struct
address_city Washington
address_state DC
array
2
struct
address_city New York
address_state NY
array
3
struct
address_city Miami
address_state FL
配列をループし、次に構造を反復する内部ループを実行する次のコードがあります。
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#key#:#data[key]#<br></cfoutput>
</cfloop>
</cfloop>
上記のコードはこの出力を生成します:
address_city:Washington
address_state:DC
address_city:New York
address_state:NY
address_city:Miami
address_state:FL
代わりに、address_state
値のみにアクセスする必要があります。私はこのようなことを試しました:
<cfloop from="1" to="#arrayLen(arrData)#" index="i">
<cfset data = arrData[i]>
<cfloop collection="#data#" item="key">
<cfoutput>#data[key]['address_state']#<br></cfoutput>
</cfloop>
</cfloop>
それから私はこのエラーメッセージを受け取っていました:
Message You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.
配列の各構造から1つのフィールドのみを出力する方法はありますか?JSオブジェクトを反復処理する場合、JavaScriptでも同様のことが可能です。例:
for (var key in data) {
console.log(data[key]['address_state']);
}
誰かがColdFusionでこれを達成する方法を知っているなら、私に知らせてください。
面白いことに、JSの例とほぼ同じようにそれを行う方法があります。
for (key in data) {
writeOutput( "Address State = " & key.address_state & "<br>");
}
https://trycf.com/gist/f0bd28bbf644912d320b10fdc5f526f4/acf?theme=monokai
data
必要のないときに配列を参照していたため、エラーが発生していました。ループの性質上、すでにsinをループしていkey
ましdata
た。スクリプトの例では、配列を介して二重ループを実行する必要はありませんでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加