我被卡住了......不记得如何使这项工作。代码:
<cfquery name = "getsomething>
select a, b, c
from d
where id = '1'
</cfquery>
<cfloop collection="#arguments#" item="argument">
<cfif #StructFind(arguments, argument)# neq #getsomething.argument[0]#><!--- here's the problem --->
do something
</cfif>
</cfloop>
查询返回一条记录;我需要获取该记录的每列的值。列名是变量(参数)。我需要什么语法来替换
#getsomething.argument[0]#
?感谢。
答案 0 :(得分:7)
您需要进行一些调整:
我看到你正在使用“集合”参数进行循环。这意味着你有一个像这样的数据结构:
<cfset arguments = StructNew() />
<cfset arguments.a = 'x' />
<cfset arguments.b = 'y' />
<cfset arguments.c = 'c' />
在这种情况下,您可以看到值无关紧要 - 重要的是通过使用“collection”参数,您正在使用结构。有些不正确,但让我们继续前进。
您不希望动态评估参数的值,您希望键 - 它们映射到您的列,因此循环如下:
<cfloop list="#StructKeyList(arguments)#" index="argument">
然后,以下代码有效:
<cfif StructFind(arguments, argument) neq getsomething[argument][1]>
请注意,在这个答案中,我已将查询索引从0更改为1:cfquery数组是从1开始的,因此第一行不是[0],而是[1]。