2017-03-07 33 views
0

我是ColdFusion的初学者,想从循环内向数组附加值。我写了这段代码,但它不适合我。如何在Coldfusion中追加< cfloop>的数组值?

<cfset myArray = arrayNew(1)> 
<cfloop query="displayQ" > 
    <cfquery name="fileListQ" datasource="#REQUEST.datasource#"> 
     select 
      project_id, 
      doc_id, 
      file_name, 
      file_size, 
      status, 
      status_date, 
      timestamp, 
      upload_date 
     from project_documents 
     where 
      project_id = "#displayQ.project_id#" 
      <cfif bitAnd(SESSION.rights,structFind(rightsList,"RIGHTS_ADMIN")) EQ 0 
        AND bitAnd(SESSION.rights,structFind(rightsList,"RIGHTS_ENOVIS_PS")) EQ 0 > 
       and status = 3 
      </cfif> 
    </cfquery> 
    <cfloop query="fileListQ"> 
     <tr> 
      <CFSET myArray=ArrayAppend(myArray,#fileListQ.doc_id#,"true"); /> 
      <td><span class="FAKELINK" onClick="doReport('#fileListQ.file_name#','#fileListQ.doc_id#')"> 
        #fileListQ.file_name# 
       </span> 
      </td> 
     </tr> 
    </cfloop> 
</cfloop> 
+0

有关arrayAppend的文档将会有一个示例显示如何正确使用它。话虽如此,鉴于数组函数在cfquery列上工作,您可能不需要另一个变量。最后,在另一个查询的循环内运行查询几乎总是一个非常糟糕的主意。如果数据源相同,请考虑只能使用一个查询获取数据的方法。 –

+0

我已阅读文档也阅读一些文章。你可以帮助我如何编写和使用列表? – vinny

+0

List var与where子句一起使用与另一个查询 – vinny

回答

2

你没有描述代码如何不适合你,但我的猜测是在这一行。

<CFSET myArray=ArrayAppend(myArray, #fileListQ.doc_id#, "true"); /> 

您的ArrayAppend()函数调用的返回值设置为您的数组变量myArray但函数返回的成功或失败的布尔。所以你的数组被来自调用的布尔返回值覆盖。好像你只需要改变它的东西,如:

<CFSET booleanDidItWork=ArrayAppend(myArray, fileListQ.doc_id, "true") /> 

还要注意,当变量作为函数调用这样的一部分#不需要英镑的迹象。

使用这样的标签语法时不需要分号。这些仅在编写cfscript语法时需要。

一些ColdFusion函数按照他们尝试过的方式工作,但其他的却不行。这就是为什么当你尝试使用它时需要阅读有关函数的文档。

说明

追加的数组元素的数组。当merge参数设置为true并且value参数是数组时,连接数组。

返回

不错,就顺利完成。

类别

数组函数

功能语法

ArrayAppend(数组,值[,合并])

ArrayAppend documentation

+0

我真的很感激你告诉我什么时候我没有解释正确的问题,尽管给了我适当的解决方案,所有的帮助你给我...谢谢 – vinny

+0

不客气。很高兴帮助你。 –