7

祝大家五一快乐,

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

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

我将这个第一个统计数据称为GCGet Created因此具有当前统计数据和代理 ID 的示例变量将类似于GC1.

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

我知道我应该能够使用类似(AID = Agent ID)的东西来动态创建变量:

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

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

无论我尝试多少不同的方法,输出总是GC1. 相反,我希望显示变量的而不是变量名。

我知道我不想使用评估,并且我在其他网站和 SO 上看到了许多关于使用结构表示法的示例,但是这些始终与查询结合使用。

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

对不起,冗长的解释,只是想确保我清楚。

请让我知道是否有任何澄清会有所帮助。

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

提前致谢!

编辑 1

这是我目前的输出代码:

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

我意识到这可能是错误的。

4

2 回答 2

18

一种选择:

设置动态变量名:

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

输出动态变量名的值:

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

另外的选择:

设置动态变量名:

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

输出动态变量名的值:

<cfoutput>#variables["GC#AID#"]#</cfoutput>
于 2013-08-23T20:12:12.883 回答
1

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

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

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

</cfloop>
于 2013-08-23T20:19:24.700 回答