星期五快乐,
几天来一直想破解这个问题。我想要做的是使用一个固定字符串和一个变量(数字)组合动态地创建一个变量。
我正在查询一个数据库以获得代理列表,然后我希望为每个代理创建单独的变量,以保存不同的统计信息。我希望获得循环中的当前stat (即创建的票证),然后将每个代理ID添加到末尾。
我为GC调用了第一个stat Get Created,因此一个包含当前stat和代理ID的示例变量将类似于GC1。
我在谷歌上搜索并阅读了许多不同的提示、指南等,但大多数都已经过时了(2002年!)或者似乎是基于查询和数组。我在寻找更简单的东西(至少我相信)。
我知道我应该能够使用(AID = Agent ID)这样的代码动态地创建变量:
<cfset "GC#AID#" = getCreated.RecordCount>现在,我没有错误,所以我假设变量是正确创建的,但是当我输出变量时,变量才是我真正遇到问题的地方(或者我认为是这样的)。
不管我尝试了多少种不同的方法,输出始终是GC1。相反,我希望显示变量的值,而不是变量名。
我知道我不想使用“评估”,我在其他站点上看到过很多例子,所以关于使用struct表示法,但是这些例子总是与查询结合在一起的。
我觉得我一定是错过了一些很简单的东西。对于如何能够在查询上下文之外输出动态创建的变量的值,有什么想法吗?
抱歉,我的解释太冗长了,只是想确认一下我的意思。
请告诉我是否有任何澄清会有帮助。
如果相关的话,我使用的是ColdFusion 10。
提前感谢!
编辑1
这就是我目前对输出代码的要求:
<cfset test = "GC#variables.AID#">
Test: <cfoutput>#test#</cfoutput>我意识到这可能是不对的。
发布于 2013-08-23 20:12:12
一种选择:
设置动态变量名:
<cfset variables["GC" & AID] = "Testing" />输出动态变量名称的值:
<cfoutput>#variables["GC" & AID]#</cfoutput>另一种选择:
设置动态变量名:
<cfset variables["GC#AID#"] = "Testing" />输出动态变量名称的值:
<cfoutput>#variables["GC#AID#"]#</cfoutput>发布于 2013-08-23 20:19:24
所有变量范围都是结构。因此,循环遍历该作用域作为一个结构。在编写代码时,它位于变量范围内。我会把它放在它自己的结构中,但是下面是你想要做的一个被黑客攻击的版本:
<cfloop collection="#variables#" item="k">
<cfif left(k,2) eq "GC">
<cfoutput>#k# : #variables[k]#</cfoutput><br/>
</cfif>
</cfloop>https://stackoverflow.com/questions/18410726
复制相似问题