我对 Coldfusion 不是很熟悉,但我正在阅读一些代码并看到了这个:
<CFLOOP INDEX="element" LIST="#FIELDNAMES#">
<CFSET REP_LIMIT = 0>
<CFSET E_VALUE = EVALUATE(#ELEMENT#)>
我有两个问题:1)将 E_VALUE 设置为当前索引吗?如果是这样,评估是什么?和 2) 这是对 EVALUATE 的不良和/或危险使用吗?
我对 Coldfusion 不是很熟悉,但我正在阅读一些代码并看到了这个:
<CFLOOP INDEX="element" LIST="#FIELDNAMES#">
<CFSET REP_LIMIT = 0>
<CFSET E_VALUE = EVALUATE(#ELEMENT#)>
我有两个问题:1)将 E_VALUE 设置为当前索引吗?如果是这样,评估是什么?和 2) 这是对 EVALUATE 的不良和/或危险使用吗?
Evaluate 主要用于评估动态命名的变量,例如表单变量。如果您不知道可以从表单提交哪些表单变量,您可以通过访问 FORM.fieldnames 来简单地遍历字段名。
(http://cfprimer.blogspot.com/2005/03/avoid-evaluate.html)。在 14 年的 CF 编码中,我只见过它使用过几次。在我看来,将自己设置为事先不知道将提交哪些表单元素是一种不好的做法。
在您的示例中,索引设置为“元素”。因此,在循环时,“字段名”列表中的任何内容都将是一个元素。
如果您想输出这些字段名,您可以执行以下操作:
<cfset fieldnames = "firstname,lastname,email">
<cfoutput>
<cfloop index="element" list="#fieldnames#">
#element#<br>
</cfloop>
</cfoutput>
这将输出如下:
firstname
lastname
email