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

Coldfusion 如何获取特定位置的数组和?,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我有一个数组: <cfset fullarray = listtoArray (listofcollumnvalues)> 我想把下面的数字加上X位置的和: 例如,如果我想要第二个元素和以下元素的和 2+3+4=27.2ColdFusion 10引入了该功能。当您给它一个数组、起始位置和可选长度时,它将返回一个数组。所以ArraySlicemyArray,3,4将返回一个子数组,其中的元素从位置3开始,包含4个元素 根据您的示例: fullarray[1]=20 fullarray

我有一个数组:

<cfset fullarray = listtoArray (listofcollumnvalues)>
我想把下面的数字加上X位置的和: 例如,如果我想要第二个元素和以下元素的和


2+3+4=27.2

ColdFusion 10引入了该功能。当您给它一个数组、起始位置和可选长度时,它将返回一个数组。所以ArraySlicemyArray,3,4将返回一个子数组,其中的元素从位置3开始,包含4个元素

根据您的示例:

fullarray[1]=20
fullarray[2]=11
fullarray[3]=4
fullarray[4]=12.2
etc.
mySum = ArraySum(ArraySlice(fullarray,2))
如果您使用的是CF 9或以下版本,则可以使用自定义项。在CFLib.org上有


警告!arraySlice使用开始和结束元素参数,而arraySlice2使用开始和长度参数,就像内置的CF10函数一样。

以下是一些可以在旧版本上使用的参数

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

只需将其命名为listSumMyListOrArray

这是一个格式化的注释。将数组定义为:

<cfset fullarray = listtoArray (listofcollumnvalues)>
实际上,你可以这样做:

numericalFieldSum = ArraySum(queryName['numericalField'];
这并不完全是您想要的,但它说明您可能不需要初始命令

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

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

当然,如果ListofcolumnValues不是来自查询,则应将此答案声明为无用的twaddle,并相应地进行向下投票。

是,从源数组中获取一个子数组,该子数组包含要求和的范围,然后对其求和。或者,在要求和的索引上执行for循环。更好的是,忽略数组并在原始列表中循环。太好了,为什么不能呢9@anatp_123:编写自己的arrayslice函数不会太困难。不过,您不必这样做,因为有人已经编写了一些代码,您可以从CFLib.org.Side note获得这些代码,因为新的CF函数也被命名为ArraySlice,您可能希望将udf命名为其他名称,以避免升级时可能发生的冲突。这似乎是整个数组的总和。他只想要一部分的总和。
<cfquery name = "mySum" dbtype = "query">
select sum(numericalField) theSumIWant
from queryName
where your conditions are met
</cfquery>