Dev*_*ily 1 coldfusion cfdirectory cfloop
我发现很难理解这一点.如何将结果限制为50.假设如果在目录中我有1000个文件,我怎么能限制它以便只循环50个文件.
<cfdirectory action="list" directory="#ExpandPath('/downloaded/')#" name="listRoot" filter="*.xml" recurse="false" sort="datelastmodified asc">
<cfoutput>
<cfloop query="listRoot" from="1" to="50" index="i">
....
</cfloop>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我收到以下错误消息
标签CFLOOP的属性验证错误.
如果您查看完整的错误消息,它包含答案(强调我的):
它具有无效的属性组合:from,index,query,to.可能的组合是:
- 必需属性:'query'.可选属性:'endrow,startrow'.
- ...
- 必需属性:'from,index,to'.可选属性:'step'.
代码试图混合两种不同类型的循环:查询循环和从/到循环.这不是一个有效的组合.您可以使用一个query循环或一个from/to循环,但不能同时使用.
话虽如此,由于目标是显示输出,实际上没有必要cfloop.只需将cfoutput与"startRow"和"maxRows"属性一起使用:
<cfoutput query="listRoot" startRow="1" maxRows="50">
#name#<br>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
正如在另一个答案中提到的,CF的最新版本也支持for ...in循环:
<cfscript>
for (row in listRoot) {
writeOutput("<br>Debug: name value = "& row.name );
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)