如何获取特定位置的数组总和?

时间:2015-07-16 18:50:57

标签: coldfusion coldfusion-9

我有一个数组:

<cfset fullarray = listtoArray (listofcollumnvalues)>

它有例如:

fullarray[1]=20
fullarray[2]=11
fullarray[3]=4
fullarray[4]=12.2
etc.

我想在数字下面添加X位置的总和: 例如,如果我想要第二个元素和下面的总和

2 + 3 + 4 = 27.2

3 个答案:

答案 0 :(得分:1)

ColdFusion 10引入了FileSystemWatcher函数。当您为其指定数组,起始位置和可选长度时,它会返回一个数组。所以ArraySlice(myArray,3,4)会返回一个“子数组”,其中的元素从第3位开始,包含4个元素。

根据您的示例:

mySum = ArraySum(ArraySlice(fullarray,2))

如果您使用的是CF 9或更低版本,则可以使用UDF。在CFLib.org上有

警告! arraySlice使用“start”和“end”元素参数,而arraySlice2使用“start”和“length”参数,如内置CF10功能

答案 1 :(得分:-1)

这里的东西适用于旧版本。

<cfscript>
function listSum(listStr)
{
  var delim = ",";
  if(ArrayLen(Arguments) GTE 2) 
    delim = Arguments[2];
  return ArraySum(ListToArray(listStr, delim));
}
</cfscript>

只需将其设为#listSum(MyListOrArray)#

即可

答案 2 :(得分:-1)

这是一种格式化的评论。您可以将数组定义为:

<cfset fullarray = listtoArray (listofcollumnvalues)>

变量listofcollumnvalues看起来可能代表查询对象的结果。如果是这种情况,您可能会做更多的工作,因为查询的每一列实际上都是一个数组。考虑一下这个查询:

<cfquery name = "queryName">
select field1, numericalField
from etc
</cfquery>

你实际上可以这样做:

numericalFieldSum = ArraySum(queryName['numericalField'];

这不完全是你想要的,但它说明你可能不需要你的初始命令。

继续假设您从查询开始,查询查询可能会为您提供所需内容。

<cfquery name = "mySum" dbtype = "query">
select sum(numericalField) theSumIWant
from queryName
where your conditions are met
</cfquery>

当然,如果listofcollumnvalues不是来自查询,那么您应该声明这个答案是无用的并且相应地进行下调。