编辑:问题是重复的,但答案不是!
我有以下代码:
<cfquery name="contact" datasource="thesource">
SELECT * FROM #table# WHERE foo = '#bar#'
</cfquery>
然后稍后(这是问题部分):
<cfloop from="0" to="9" index="i">
<cfset thisvar = Evaluate("contact.check" & i) />
<cfoutput>
#thisvar#
</cfoutput>
</cfloop>
执行后,它会抛出一个不错的大“变量contact.check0 未定义”。但是,#contact.check0#
如果硬编码,输出会很好。
有想法该怎么解决这个吗?
注意:我在循环数据库查询结果时看到了Coldfusion - 变量字段名,虽然问题看起来完全一样,但解决方案不起作用。根据评论,我也收到“无法转换为数字”错误。我注意到 Tomalak 提到了“a little catch”,但从来没有说它是什么。在他链接到的文章中,我尝试了每一种语法等价的形式,但都会引发错误……要么无法转换为数字,要么没有定义。
另外,我知道Evaluate()
有开销并且“不应该使用”。我会采用任何有效的解决方案,无论它是否有 Evaluate。
这是在 ColdFusion 9 上。
谢谢
编辑:虽然类似的问题已经有了答案,但这个问题有不同的原因。请参阅下面接受的答案。