如何从cfscript函数返回对象列表

时间:2013-10-19 02:35:18

标签: coldfusion

我习惯了ColdFusion。看起来cfscript让开发人员的生活更轻松。

在我的cfscript函数中,我需要:

  1. 运行查询“从MyTable选择A,B”
  2. 对于此查询的每一行,动态创建一个具有三个属性A,B和C的新组件。此处,C在函数内计算。
  3. 返回新组件的数组。
  4. 这是伪代码:

    <cfquery name="myq" datasource="mydsn">
        SELECT A, B
       FROM MyTable
    </cfquery>
    
    <cfscript>
    function MyFunc() {
       // Do the magic and return the array
    } 
    </cfscript>
    

    我猜我会使用这个函数,因为我会使用查询:

    <cfset myarray=MyFunc() />
    <cfloop index="i" from="1" to="#arrayLen(myarray)#">
       #myarray.A# <br />
       #myarray.B# <br />
       #myarray.C# <br />
    </cfloop>
    

    如果你能告诉我如何做到这一点,我将不胜感激。我一直在搜索Adobe文档,但没有找到一个我可以联系到的好例子。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我知道我不想粘贴链接,但它确实是你所需要的。

然后只使用new xxx()表示新对象,ArrayAppend()表示构建数组并return

祝你好运,如果你遇到任何其他问题,请告诉我们。

答案 1 :(得分:1)

你可能想要像

这样的东西
 <cfoutput>
 <cfloop index="i" from="1" to="#arrayLen(myarray)#">
  #myarray.A[i]# <br />
  #myarray.B[i]# <br />
  #myarray.C[i]# <br />
 </cfloop>
 </cfoutput>

总的来说,你应该考虑返回一个查询而不是一个数组

<cfscript>
  query function MyFunc() {
  // Do the magic and return the array
  } 
</cfscript>

然后按

处理
 <cfset myQuery = MyFunc()>

 <cfoutput query="myQuery">
      #A# <br />
      #B# <br />
      #C# <br />
 </cfoutput>

ColdFusion中的一条经验法则是:查询比结构数组更强大。您可以通过这种方式处理它们,但是您将错过一些非常强大的功能,例如让<cfoutput>迭代查询。