如何连接两个字符串并将结果用作coldfusion中的变量名?

时间:2013-04-02 17:15:50

标签: concatenation cfml evaluate

我的表格中有许多格式为

的字段
  • name =“field-1”
  • name =“field-2”
  • name =“field-3”
  • 名称= “字段-4”
  • 等...

在表单操作页面上,我希望能够使用循环并能够使用循环索引来连接字符串前缀,如<cfset newField = "field-" & #index#>,然后使用{{1}访问上一页的表单域。

我一直在玩#Variables.newField#功能,但没有运气。我不太多使用ColdFusion,所以我可能只是稍微偏离语法。

我如何使用它的一个例子是:

Evaluate()

2 个答案:

答案 0 :(得分:8)

对于这种情况,您根本不必使用评估。只需按键名访问变量struct。

<cfset newField = "form.field-" & index>
<cfset value = variables[newField]>

或只是

<cfset value = variables["form.field-#index#"]>

或者如果您不想使用中间变量

<cfoutput>#variables["form.field-" & index]#</cfoutput>

答案 1 :(得分:4)

无需将其设置为variables范围。在循环中,您可以直接从form范围使用关联数组表示法访问表单字段值,如下所示:

<input type="hidden" name="field-<cfoutput>#index#</cfoutput>" 
value="<cfoutput>#form['field-' & index]#</cfoutput>">

为了更加安全,在尝试显示之前检查每个表单字段是否明智是明智的:

<cfif structKeyExists(form, 'field-' & index)>
    <!--- display field --->
</cfif>