开发人员指南的第116页说:“与cfloop标签不同,CFScript for-in循环不提供对查询和列表循环的内置支持。”
问:如何使用ColdFusion 9中的新脚本语法遍历列表?
<cfloop list="#qry.Columnlist#" index="FieldName">
<cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
发布于 2011-03-29 22:38:52
您还可以尝试listToArray,然后在CF9中对数组使用for-in结构,如下所示:
<cfscript>
aCol = listToArray (qry.ColumnList);
for( fieldName in aCol ){
form[fieldName] = qry[fieldName][1];
}
</cfscript>
发布于 2010-01-07 22:14:36
<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>
发布于 2010-01-08 03:37:21
我会先把列表转换成一个数组。ListGetAt()
在一个循环中被调用n次是没有效率的。然而,ArrayLen()
应该相当快。
<cfscript>
arr = ListToArray(qry.Columnlist);
for (i = 1; i <= ArrayLen(arr); i++)
{
fieldName = arr[i];
form[FieldName] = qry[FieldName][1];
}
</cfscript>
https://stackoverflow.com/questions/2020808
复制相似问题