我对Coldfusion并不熟悉,但我正在阅读一些代码,并看到了这一点:
<CFLOOP INDEX="element" LIST="#FIELDNAMES#">
<CFSET REP_LIMIT = 0>
<CFSET E_VALUE = EVALUATE(#ELEMENT#)>
我有两个问题: 1)将E_VALUE设置为当前索引吗?如果是这样,那么EVALUATE是什么? 2)这是EVALUATE的不良和/或危险用途吗?
答案 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