Coldfusion循环行为

时间:2012-04-07 20:47:03

标签: coldfusion

我对Coldfusion并不熟悉,但我正在阅读一些代码,并看到了这一点:

 <CFLOOP INDEX="element" LIST="#FIELDNAMES#">
    <CFSET REP_LIMIT = 0>
    <CFSET E_VALUE = EVALUATE(#ELEMENT#)>

我有两个问题: 1)将E_VALUE设置为当前索引吗?如果是这样,那么EVALUATE是什么? 2)这是EVALUATE的不良和/或危险用途吗?

1 个答案:

答案 0 :(得分:2)

Evaluate主要用于评估动态命名的变量,例如表单变量。如果您不知道可以从表单提交哪些表单变量,您只需通过访问FORM.fieldnames循环遍历该字段名。

(http://cfprimer.blogspot.com/2005/03/avoid-evaluate.html)。在编写CF的14年中,我看到它只使用了几次。在我看来,以不知道将提交哪些表单元素的方式设置自己是不好的做法。

在您的示例中,索引设置为“element”。因此,在循环时,“fieldnames”列表中的任何内容都将成为一个元素。

如果你想输出这些字段名,你可以这样做:

<cfset fieldnames = "firstname,lastname,email">
<cfoutput>
<cfloop index="element" list="#fieldnames#">
     #element#<br>
</cfloop>
</cfoutput>

这将输出如下:

firstname
lastname
email