Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 对循环中的变量进行计数_Variables_Loops_Coldfusion - Fatal编程技术网

Variables 对循环中的变量进行计数

Variables 对循环中的变量进行计数,variables,loops,coldfusion,Variables,Loops,Coldfusion,我想计算变量并在代码中的某个地方显示它。我有一个循环: <cfloop query="get_serial"> <cfif PROCESS_ID eq attributes.action_id> #SERIAL_NO# </cfif> </cfloop> 及其查询: <cfquery name="get_serial" datasource="#dsn3#"> SELECT * FROM SERVICE_GUARANTY_NEW

我想计算变量并在代码中的某个地方显示它。我有一个循环:

<cfloop query="get_serial">
  <cfif PROCESS_ID eq attributes.action_id> #SERIAL_NO# </cfif>
</cfloop>
及其查询:

<cfquery name="get_serial" datasource="#dsn3#">
SELECT * 
FROM SERVICE_GUARANTY_NEW 
WHERE STOCK_ID = #attributes.action_row_id# 
ORDER BY SERIAL_NO
</cfquery>

一切都很好,但我想计算到底显示了多少变量。实际上我想这样做,因为我缺少数据库变量。实际上,可以从数据库中获取这些变量的数量,我只是不知道应该使用哪些变量。这就是我想手动计数的原因。

如果我理解正确,您可以使用循环中的计数器进行计数

<cfset counter = 0 />

<cfloop query="get_serial">
  <cfif PROCESS_ID eq attributes.action_id> 
    #SERIAL_NO# 
    <cfset counter ++ />
  </cfif>
</cfloop>

<cfoutput>Output #counter# times!</cfoutput>
编辑:回答您的后续问题:


希望有帮助

ColdFusion公开了一个变量,该变量告诉您查询中返回了多少行,而无需运行循环进行计数:

<cfquery name="get_serial" datasource="#dsn3#">
    SELECT * 
    FROM SERVICE_GUARANTY_NEW 
    WHERE STOCK_ID = #attributes.action_row_id# 
    ORDER BY SERIAL_NO
</cfquery>

<cfoutput>There are #get_serial.recordCount# rows.</cfoutput>

<cfoutput query="get_serial">
    <p>#get_serial.serial_no#</p>
</cfoutput>

这里有另外两个答案,只是为了好玩:,尽管拥有计数器可能是最好的方式,因为使用循环已经会带来性能上的损失

<cfquery name="getCount" dbtype="query">
SELECT PROCESS_ID FROM get_serial WHERE PROCESS_ID = #attributes.action_id#
</cfquery>
<cfset total = getCount.RecordCount />
使用列表,总是很有趣:

<cfset total = ListValueCount(ValueList(get_serial.PROCESS_ID), attributes.action_id) />

重点是,有多种方法可以解决这类问题,所以请玩得开心:

谢谢!这比看起来容易:你能解释一下,如果循环在底部,我如何在页面顶部显示计数器吗?我在答案中添加了这一点-使用cfsavecontent。
<cfset total = ListValueCount(ValueList(get_serial.PROCESS_ID), attributes.action_id) />