coldfusion 9 VAR在使用<cfset> </cfset>时出现问题

时间:2014-09-03 09:49:25

标签: coldfusion coldfusion-9

我变得非常困惑。

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

<cfset cataloge_menu_1 = "menu item 1">
<cfset cataloge_menu_2 = "menu item 2">
<cfset cataloge_menu_3 = "menu item 3">

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

<cfset cathead = "cataloge_menu_"&url.typeID>

以及以下输出......

<cfoutput>#cathead#</cfoutput>

但不是根据URL ID输出“菜单项1”或菜单项2“,而是输出”cataloge_menu_1“或”cataloge_menu_2“。

我需要输出的是“菜单项X”而不是“cataloge_menu_X”。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

这是做什么的:

<cfset cathead = "cataloge_menu_"&url.typeID>

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

<cfoutput>#cathead#</cfoutput>

只是输出该字符串。

如果你想访问一个名为cataloge_menu_1的变量,那么你不能简单地输出一个包含该变量名的字符串,并希望CF猜测你的意思&#34;寻找一个具有该名称的变量输出而不仅仅是字符串&#34;。您需要告诉它输出变量

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

<cfoutput>#variables[cathead]#</cfoutput>
PS:它可能是语言的东西(即:代码不是英文),但你的意思是catalogecatalogue(或者我是&{39;姿势{{} 1}}如果你必须)?

答案 1 :(得分:1)

您可以使用Evaluate()功能完成此操作。这是它的工作原理:

<cfset cataloge_menu_1 = "menu item 1">
<cfset cataloge_menu_2 = "menu item 2">
<cfset cataloge_menu_3 = "menu item 3">
<cfset url.typeID=2 />

<cfset cathead = Evaluate("cataloge_menu_"&url.typeID) />
<cfoutput>#cathead#</cfoutput>

答案 2 :(得分:1)

为什么不尝试这个:

<cfset cathead = VARIABLES["cataloge_menu_" & url.typeID]>
<cfoutput>#cathead#</cfoutput>

或者你可以输出动态变量:

<cfoutput>#VARIABLES["cataloge_menu_" & url.typeID]#</cfoutput>