我试图在Coldfusion中创建一个递归函数,并且遇到了一些问题。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变量的变量范围造成的? – 2010-09-27 21:19:14
谢谢。那就是诀窍。我在我的代码中有CFQueryParam,但我不想写更多,然后我需要在这里。 – 2010-09-27 21:40:39
Edward,我刚刚发现这个http://www.garyrgilbert.com/tutorials/coldfusion/beginner/scope.cfm – 2010-09-27 21:48:42