我正在将 ColdFusion 应用程序转换为 C#(我是 CF n00b)。
我有一个脚本执行 cfquery,然后执行 cfloop 的结果,它似乎试图将当前行与其下一行进行比较。它似乎试图确保它不会尝试读取数组的末尾。
<cfquery name="qTripLegs" datasource="#sdb#">
SELECT ...
</cfquery>
<cfloop query="qTripLegs">
<cfif (customs_stop[currentrow] NEQ "" OR fuel_stop[currentrow] NEQ "") AND recordcount GT currentrow AND departure[currentrow] NEQ arrival[currentrow+1]>
感觉 currentrow 是基于 1 的(currentrow 在第一次进入 cfloop 时的值为 1)。我对么?我查看了 Coldfusion 文档,但没有看到任何关于此的信息。
最佳答案
是的,CF 中的查询和数组是基于 1 的。
CurrentRow 和 RecordCount 变量是查询的属性(在查询循环中,它们自动限定范围)。<cfloop query="QueryName">...</cfloop>
将遍历整个查询*,从 1 到 QueryName.RecordCount
,以及 QueryName.CurrentRow
索引会自动适本地填充/增加。不使用查询循环之前的值。
*(除非使用 cfbreak/etc)
另外要指出的是,通常不需要阻止读取结束(如上所述,查询循环处理它),这只是因为正在使用 CurrentRow+1 才需要避免错误。
关于cfloop 中未指定索引时当前行的 ColdFusion 初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225655/