页面116的开发人员指南的说 “不像CFLOOP标签,CFSCRIPT换的循环不提供内置的遍历查询和列表的支持。”

Q:我如何在循环使用新的脚本语法中的ColdFusion 9列表

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

编辑一些好的(也许甚至快一点,对于较重循环)以上的版本:

<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