How to concat two strings and use the result as a variable name in coldfusion?

cfml, concatenation, evaluate

Solution

You don't have to use evaluate at all for this case. Just access the variables struct by key name.

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

or just

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

or if you don't want to use an intermediary variable

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

Problem

I have a form which has many fields in the format of - name="field-1" - name="field-2" - name="field-3" - name="field-4" - etc.... On the form action page, I would like to be able to use a loop and be able to use the index of the loop to concat with a string prefix like this `<cfset newField = "field-" & #index#>` and then use the `#Variables.newField#` to access the form field on the previous page. I've been playing around with the `Evaluate()` function, but no luck. I don't use ColdFusion much, so I may just be a little off on the syntax. An example of how I am using it is: ``` <cfset newField = "form.field-" & #index#> <input type="hidden" name="field-<cfoutput>#index#</cfoutput>" value="<cfoutput>Evaluate(Variables.newField)</cfoutput>"> ```

Original source