我有一个数组:
<cfset fullarray = listtoArray (listofcollumnvalues)>
它有例如:
fullarray[1]=20
fullarray[2]=11
fullarray[3]=4
fullarray[4]=12.2
etc.
我想在数字下面添加X位置的总和: 例如,如果我想要第二个元素和下面的总和
2 + 3 + 4 = 27.2
答案 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
不是来自查询,那么您应该声明这个答案是无用的并且相应地进行下调。