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>
我意识到这可能是不合时宜的。
答案 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>