gpt4 book ai didi

coldfusion - 如何动态循环遍历结构数组

转载 作者:行者123 更新时间:2023-12-02 05:16:20 25 4
gpt4 key购买 nike

我需要从结构数组中创建一个查询对象。该数组有大约 200 个键,数组内的结构在名称、大小和深度上各不相同。这是一个节点的样子:

array of structures I need to loop thru and create query object

我已经让它在 array[#i].adGroupId 和 array[#i#].userStatus 上运行良好,但我需要在将结构值添加到查询之前检查它是否存在。例如 criterion.text 并不总是在结构中,所以我需要检查它,但不确定如何检查。这是到目前为止的代码,但它总是跳过 criterion.text 和 bids.maxCpc.amount.microAmount。

<cfset vColumns = "AdGroupID,KeywordText,Status,MaxCPC" />
<cfset vColumnValue = "AdGroupID,criterion.text,userStatus,bids.maxCPC" />
<cfset loopnum = 1>
<cfset myquery = QueryNew(vColumns) >
<cfloop array="#aKeywordsAll#" index="i">
<cfset temp = QueryAddRow(myquery, 1)>
<cfset loopNum2 = 1>
<cfloop list="#vColumnValue#" index="j">
<cfif structKeyExists(aKeywordsAll[loopnum],j)>
<cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), aKeywordsAll[loopnum][j])>
<cfelse>
<cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), "test")>
</cfif>
<cfset loopNum2++ />
</cfloop>
<cfset loopnum++ />
</cfloop>

这是创建的查询对象。它说“测试”,但希望它能给出值:

Query object created from my crazy looping

最佳答案

您的问题是 StructKeyExists 函数正在寻找字面上名为“criterion.text”的键(例如)——这是可能的,而不是名为“criterion”的键内的“text”键。我创建了一个应该可以为您解决问题的 UDF:

 <cffunction name="StructGetByKeyList">
<cfargument name="struct">
<cfargument name="key">

<cfset var result = "">

<cfif StructKeyExists(struct,ListFirst(key,"."))>
<cfif ListLen(key,".") GT 1>
<cfreturn StructGetByKeyList(struct[ListFirst(key,".")],ListRest(key,"."))>
<cfelse>
<cfreturn struct[key]>
</cfif>
<cfelse>
<cfreturn "">
</cfif>
</cffunction>

然后你可以调用 Len(StructGetByKeyList(aKeywordsAll[loopnum],j)) 而不是 structKeyExists(aKeywordsAll[loopnum],j)。

对于这一行:

 <cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), aKeywordsAll[loopnum][j])>

使用这个:

 <cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), StructGetByKeyList(aKeywordsAll[loopnum],j))>

关于coldfusion - 如何动态循环遍历结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574673/

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