4

我被卡住了......不记得如何使这项工作。编码:

<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]#

? 谢谢。

4

1 回答 1

7

您需要进行一些调整:

我看到您正在使用“集合”参数进行循环。这意味着你有一个像这样的数据结构:

<cfset arguments = StructNew() />
<cfset arguments.a = 'x' />
<cfset arguments.b = 'y' />
<cfset arguments.c = 'c' />

您可以看到在这种情况下这些值并不重要——重要的是通过使用“集合”参数,您正在使用一个结构。有点不正确,但让我们继续假设。

您不希望动态评估参数的值,而是希望- 它们映射到您的列,因此循环如下:

<cfloop list="#StructKeyList(arguments)#" index="argument">

然后,以下代码有效:

<cfif StructFind(arguments, argument) neq getsomething[argument][1]>

请注意,在此答案中,我已将您的查询索引从 0 更改为 1:cfquery 数组是基于 1 的,因此第一行不是 [0],而是 [1]。

于 2011-10-05T15:09:53.713 回答