gpt4 book ai didi

Coldfusion - 如何遍历列表中的所有内容

转载 作者:行者123 更新时间:2023-12-02 07:03:08 24 4
gpt4 key购买 nike

制作数组:

<cfset tempArr = DeserializeJSON(URL.data) />
<cfset temp1 = "" />
<cfset temp2 = "" />
<cfset selectList1 = "" />
<cfset selectList2 = "" />

<cfloop array=#tempArr# index="i">
<cfset temp1 = GetToken(i,1,":")>
<cfset temp2 = GetToken(i,2,":")>

<cfset selectList1 = listAppend(selectList1, temp1)>
<cfset selectList2 = listAppend(selectList2, temp2)>
</cfloop>

遍历它??:

<cfquery name="sample" datasource="database">
SELECT *
FROM table
WHERE
<cfloop from="1" to="#listLen(selectList1)#" index="i"/>
#ListGetAt(selectList1, i)# = <cfqueryparam value="#ListGetAt(selectList2)#" />
</cfloop>
<cfif i neq listLen(#selectList1#)>
AND
</cfif>
</cfquery>

我的意图是根据从 javascript 页面接收到的数组在表中进行动态搜索。数据以这种 form -> columnName:searchBy 的形式出现。即,示例片段是 name:Jim。我想构建动态代码,允许我按不同的列进行搜索,但我无法让我的循环工作。如果有帮助,我会收到此错误:

(Invalid CFML construct found on line 20 at column 59.)

这是这一行:

<cfloop from="1" to="#listLen(selectList1)#" index="i" />

最佳答案

Kyle 的回答 100% 正确,但这里有一个更好的解决方案。使用列表是一个非常低效的过程(见下文)并且使用 listGetAt 只会激怒 future 的程序员。您可以使用数组来存放数据并使用默认的 WHERE 语句来简化循环。

<cfset tempArr = DeserializeJSON(URL.data) />
<cfset temp1 = "" />
<cfset temp2 = "" />
<cfset selectList1 = [] />
<cfset selectList2 = [] />

<cfloop array=#tempArr# index="i">
<cfset temp1 = GetToken(i,1,":")>
<cfset temp2 = GetToken(i,2,":")>

<cfset arrayAppend(selectList1, temp1)>
<cfset arrayAppend(selectList2, temp2)>
</cfloop>

<cfif NOT arrayIsEmpty(tempArr)>
<cfquery name="sample" datasource="database">
SELECT column1, column2, column3
FROM table
WHERE 1 = 1
<cfloop from="1" to="#listLen(selectList1)#" index="i"/>
AND #selectList1[i]# = <cfqueryparam value="#selectList2[i]#" />
</cfloop>
</cfquery>
</cfif>
  • 当您追加到列表时,会在内存中创建一个新字符串,该字符串结合了前两个字符串,而前一个字符串将被删除。这绝对是过早的优化,但避免使用列表仍然是一个好习惯,尤其是当您需要访问列表中的元素时。

关于Coldfusion - 如何遍历列表中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com