gpt4 book ai didi

coldfusion - Coldfusion 中的递归函数

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

我试图在 coldfusion 中创建一个递归函数,但遇到了一些问题。

这是我的逻辑:

<cffunction name="getEvents" access="private">
<cfargument name="strtdate">
<cfargument name="parentID" default=0>
<cfqeury name="qry" datasource="db">
select *
from table
where parentid = #parentid# and
starttime between #strtdate# and #DateAdd('d', 1, strtdate)#
</cfquery>

<cfset events = arraynew(1)>
<cfloop query="qry">
<cfset events[qry.currentrow] = structnew()>
<cfset events[qry.currentrow].id = qry.id>
<cfset subevents = getEvents(strtdate, qry.id)>
<cfif arraylen(subevents)>
<cfset events[qry.currentrow].subevents = subevents>
</cfif>
</cfloop>

<cfreturn events>
</cffunction>

问题在于,一旦函数调用自身,一旦它失去了循环中的原始查询。我现在的事件是三层深度,但我不想一遍又一遍地调整相同的代码来处理所有事件。

我想以包含给定日期的所有事件和子事件的结构数组结束。

最佳答案

尝试 var确定查询对象的范围。事实上,您通常应该使用适当的范围界定。例如:

<cffunction name="getEvents" access="private">
<cfargument name="strtdate">
<cfargument name="parentID" default=0>

<cfset var qry = "" />
<cfset var events = "" />
<!--- etc. --->


<cfquery name="qry" datasource="db">
select *
from table
where parentid = #parentid# and
starttime between #ARGUMENTS.strtdate#
and #DateAdd('d', 1, ARGUMENTS.strtdate)#
</cfquery>

... etc.

否则一切都会进入 VARIABLES范围并覆盖我怀疑的其他人。

希望对您有所帮助!

PS:您还应该考虑使用 <cfqueryparam />在您的查询中。

关于coldfusion - Coldfusion 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807871/

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