如何获得特定位置的数组总和?
How to get sum of array for specific position?
我有一个数组:
<cfset fullarray = listtoArray (listofcollumnvalues)>
它有例如:
fullarray[1]=20
fullarray[2]=11
fullarray[3]=4
fullarray[4]=12.2
etc.
我想加上数字下方 X 位置的总和:
例如,如果我想要第二个元素及以下元素的总和
2 + 3 + 4= 27.2
ColdFusion 10 引入了ArraySlice
功能。当你给它一个数组、一个起始位置和一个可选的长度时,它 return 就是一个数组。所以 ArraySlice(myArray,3,4)
会 return 一个 "sub-array" 的元素从位置 3 开始并包含 4 个元素。
根据你的例子:
mySum = ArraySum(ArraySlice(fullarray,2))
如果您使用的是 CF 9 或更低版本,则可以使用 UDF。在 CFLib.org 有
警告! arraySlice
使用 "start" 和 "end" 元素参数,而 arraySlice2
使用 "start" 和"length" 个参数,例如内置的 CF10 函数。
以下内容适用于旧版本。
<cfscript>
function listSum(listStr)
{
var delim = ",";
if(ArrayLen(Arguments) GTE 2)
delim = Arguments[2];
return ArraySum(ListToArray(listStr, delim));
}
</cfscript>
只需将其调用为#listSum(MyListOrArray)#
这是格式化的评论。您将数组定义为:
<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
不是来自查询,你应该声明这个答案是无用的废话并相应地投反对票。
我有一个数组:
<cfset fullarray = listtoArray (listofcollumnvalues)>
它有例如:
fullarray[1]=20
fullarray[2]=11
fullarray[3]=4
fullarray[4]=12.2
etc.
我想加上数字下方 X 位置的总和: 例如,如果我想要第二个元素及以下元素的总和
2 + 3 + 4= 27.2
ColdFusion 10 引入了ArraySlice
功能。当你给它一个数组、一个起始位置和一个可选的长度时,它 return 就是一个数组。所以 ArraySlice(myArray,3,4)
会 return 一个 "sub-array" 的元素从位置 3 开始并包含 4 个元素。
根据你的例子:
mySum = ArraySum(ArraySlice(fullarray,2))
如果您使用的是 CF 9 或更低版本,则可以使用 UDF。在 CFLib.org 有
警告! arraySlice
使用 "start" 和 "end" 元素参数,而 arraySlice2
使用 "start" 和"length" 个参数,例如内置的 CF10 函数。
以下内容适用于旧版本。
<cfscript>
function listSum(listStr)
{
var delim = ",";
if(ArrayLen(Arguments) GTE 2)
delim = Arguments[2];
return ArraySum(ListToArray(listStr, delim));
}
</cfscript>
只需将其调用为#listSum(MyListOrArray)#
这是格式化的评论。您将数组定义为:
<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
不是来自查询,你应该声明这个答案是无用的废话并相应地投反对票。