动态变量命名和引用(ColdFusion)

时间:2013-08-23 19:46:26

标签: variables dynamic coldfusion

Happy Friday All,

试图破解这几天。我想要做的是使用固定字符串和变量(数字)的组合动态创建变量。

我正在查询数据库以获取代理列表,然后我想为每个代理创建单独的变量以保存不同的统计信息。我希望在循环中获取当前的统计信息(即创建的故障单),然后将每个代理ID添加到最后。

我正在为GC调用此第一个统计信息Get Created,因此具有当前统计信息和代理ID的示例变量类似于GC1

我使用Google搜索并阅读了许多不同的提示,指南等,但其中大部分都已过时(2002年!)或似乎基于查询和数组。我正在寻找更简单的东西(或者我相信)。

我知道我应该可以使用( AID =代理商ID )的内容动态创建变量:

<cfset "GC#AID#" = getCreated.RecordCount>

现在,我没有错误,所以我假设变量正在被正确创建,但是当我去输出变量时,我真的遇到了问题(或者我认为)。

无论我尝试多少种不同的方式,输出始终为GC1。相反,我希望显示变量的变量名称。

我知道我不想使用评估,我在其他网站上看到过很多关于使用struct表示法的例子,但这些例子总是与查询结合使用。

我觉得我必须在这里找到一些非常简单的东西。关于如何在查询上下文之外输出动态创建的变量的的任何想法?

很抱歉这个冗长的解释,只是想确保我很清楚。

如果有任何澄清有帮助,请告诉我。

如果相关,我正在使用ColdFusion 10。

提前致谢!

编辑1

这就是我目前对输出代码的要求:

<cfset test = "GC#variables.AID#">
Test: <cfoutput>#test#</cfoutput>

我意识到这可能是不合时宜的。

2 个答案:

答案 0 :(得分:15)

一个选项:

设置动态变量名称:

<cfset variables["GC" & AID] = "Testing" />

输出动态变量名称的值:

<cfoutput>#variables["GC" & AID]#</cfoutput>

另一种选择:

设置动态变量名称:

<cfset variables["GC#AID#"] = "Testing" />

输出动态变量名称的值:

<cfoutput>#variables["GC#AID#"]#</cfoutput>

答案 1 :(得分:1)

所有变量范围都是结构。因此,将该范围作为结构循环。在编写代码时,它位于变量范围内。我把它放在它自己的结构中,但这是你正在尝试做的一个被黑的版本:

<cfloop collection="#variables#" item="k">

    <cfif left(k,2) eq "GC">
        <cfoutput>#k# : #variables[k]#</cfoutput><br/>
    </cfif>

</cfloop>