質問

開発者ガイドのページ116は述べています 「cfloopタグとは異なり、CFScriptでは、のためにインループクエリーおよびリストをループするためのビルトインサポートを提供していません。」

Q:どのようにColdFusion 9の中に新しいスクリプトの構文を使用して、リスト上のIループを行う

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
役に立ちましたか?

解決

またlistToArrayを試してみて、その後、としてCF9での配列のためのためのイン構築物を使用することができます:

<cfscript>
aCol = listToArray (qry.ColumnList);

for( fieldName in aCol ){
    form[fieldName]  = qry[fieldName][1];
}

</cfscript>

他のヒント

<cfscript>
  var i = 0;
  var l = ListLen(qry.Columnlist);
  var FieldName = "";
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = ListGetAt(qry.Columnlist, i);
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>
<時間>

EDITよりよい(多分少し速く、本当に重いforループ)上記のバージョン:

<cfscript>
  var i = 0;
  var Fields = ListToArray(qry.Columnlist);
  var FieldName = "";
  var l = arrayLen(Fields);
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = Fields[i];
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>

私は、最初の配列にリストを回します。 ListGetAt()は、ループ内でn回と呼ばれることが効率的ではありません。 ArrayLen()は、しかし、非常に高速である必要があります。

<cfscript>
arr = ListToArray(qry.Columnlist);

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top