coldfusion - 数组/列表上的 cfloop 不允许引用以前的值

标签 coldfusion cfloop

我经常对数组或列表使用 cfloop,因为我有涉及数组值的复杂计算。但是,似乎没有办法返回到数组/列表的特定成员。如果我使用普通循环,我可以很容易地做到这一点:

<cfloop from = "1" to = "#ArrayLen(myarray)#" index = "i">
<cfset temp = "myarray[i]">
<cfif mystruct[temp] GT 5>
  ... do something
</cfif>
<cfif myarray[i] NEQ myarray[i-1]>
  ...do something
</cfif>
</cfloop>

但是当我必须用“i”而不是 i 处的值来引用它们时,涉及 myarray[i] 的计算可能会很麻烦。

但是如果我在数组上使用循环,我通常必须添加一个计数器:

<cfset m = 0>
<cfloop array = #myarray# index = "value">
<cfset m = m + 1>
<cfif mystruct[value] GT 5>
 ... do something
</cfif> 
<cfif myarray[i] NEQ myarray[i-1]>
  ...do something
</cfif>
</cfloop>

有人知道如何在 cfloop array = myarray 编码中引用 myarray[i-1] 吗?在对此进行研究时,我发现了这个咆哮:http://www.markdrew.co.uk/blog/post.cfm/cfloop-rant , 但它没有提供任何解决方案。

最佳答案

以评论的形式开始,但很快就变得太长了。正如您提到的,我通常使用计数器。我认为 ColdFusion 没有内置的方式来为您处理这个问题。如果你只是担心比较当前值和以前的值,我以前做过这样的事情:

<cfset previousValue = "">
<cfloop array = #myarray# index = "value">
    <cfif mystruct[value] GT 5>
        <!--- do something --->
    </cfif> 
    <cfif value NEQ previousValue>
        <!--- do something --->
    </cfif>
    <cfset previousValue = value>
</cfloop>

关于coldfusion - 数组/列表上的 cfloop 不允许引用以前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093380/

相关文章:

coldfusion - 如何在 ColdFusion 10 中禁用 sameformfieldsasarray?

mysql - 如何在另一个查询中正确地 CFloop 查询?

cookies - 如何读取 ColdFusion 中名称中包含特殊字符的 cookie 值?

coldfusion - 我可以在 JavaScript 中使用 ColdFusion 标签吗?

正则表达式检查字符串是否包含指定以外的字符

arrays - cfloop 一个数组并逐行读取内容

coldfusion - 使用 ColdFusion (2016) 遍历电子表格数据并对输出进行分组

html - cfdirectory 根据过滤器输出不同的 html

arrays - 使用ColdFusion遍历数组

Coldfusion中的.Net时间字符串转换