使用<cfset>时,coldfusion 9 VAR问题

eli*_*reu 1 coldfusion coldfusion-9

我变得非常困惑.

我有一组变量......

<cfset cataloge_menu_1 = "menu item 1">
<cfset cataloge_menu_2 = "menu item 2">
<cfset cataloge_menu_3 = "menu item 3">
Run Code Online (Sandbox Code Playgroud)

我有一个URL ID,所以我想要做的是输出上面的变量基于URL ID,所以我有以下...

<cfset cathead = "cataloge_menu_"&url.typeID>
Run Code Online (Sandbox Code Playgroud)

和以下输出......

<cfoutput>#cathead#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

但是,不是根据URL ID输出"菜单项1"或菜单项2",而是输出"cataloge_menu_1"或"cataloge_menu_2".

我需要输出的是"菜单项X"而不是"cataloge_menu_X".

非常感激任何的帮助.

Ada*_*ron 8

这是做什么的:

<cfset cathead = "cataloge_menu_"&url.typeID>
Run Code Online (Sandbox Code Playgroud)

只是制作一个包含"cataloge_menu_1"(等)的字符串.这个:

<cfoutput>#cathead#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

只是输出该字符串.

如果你想访问一个名为cataloge_menu_1then 的变量,你不能简单地输出一个包含该变量名的字符串,并期望CF猜测你的意思是"查找具有该名称的变量并输出而不仅仅是字符串".你需要告诉它输出那个变量.

默认情况下,无范围变量放在变量范围内.因此,要从变量作用域中获取动态命名变量,可以使用关联数组表示法通过包含其名称的字符串来引用变量:

<cfoutput>#variables[cathead]#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

PS:它可能是一种语言的东西(即:代码不是英文),但你的意思是catalogecatalogue(或者catalog如果你必须的话)?