For loop 循环复制的Cfscript?

For loop 循环复制的Cfscript?,for-loop,coldfusion,coldfusion-8,For Loop,Coldfusion,Coldfusion 8,我在标记中构建的for循环中得到了重复的数组。这可能是什么原因 我正在尝试构建一个数组,稍后使用数据库中的查询将其解析为JSON。我已经检查过了,结果查询对象不包含重复的行;它有两个单独的行,尽管在for循环的结果数组中,我只得到第一行两次 l.response.body.result = ArrayNew(1); for(l.i=1;l.i lte l.events.recordcount;l.i = (l.i + 1)){ ArrayAppend(l.response.body["res

我在
标记中构建的for循环中得到了重复的数组。这可能是什么原因

我正在尝试构建一个数组,稍后使用数据库中的查询将其解析为JSON。我已经检查过了,结果查询对象不包含重复的行;它有两个单独的行,尽管在for循环的结果数组中,我只得到第一行两次

l.response.body.result = ArrayNew(1);
for(l.i=1;l.i lte l.events.recordcount;l.i = (l.i + 1)){
  ArrayAppend(l.response.body["result"], StructNew());
  l.eventIndex = ArrayLen(l.response.body["result"]);
  l.response.body["result"][l.eventIndex]["id"] = l.events.id;
  l.response.body["result"][l.eventIndex]["start"] = DateDiff("s","1/1/1970",l.events.startdate) * 1000;
  l.response.body["result"][l.eventIndex]["end"] = DateDiff("s","1/1/1970",l.events.enddate) * 1000;
  l.response.body["result"][l.eventIndex]["title"] = l.events.title;
  l.response.body["result"][l.eventIndex]["class"] = "class";
  l.response.body["result"][l.eventIndex]["url"] = l.url;
}

谢谢你的帮助。

没关系,我太笨了:)我把
cfloop
for
循环搞混了,以为只需要查询的一行:)我把它改成了:

l.response.body.result = ArrayNew(1);
for(l.i=1;l.i lte l.events.recordcount;l.i = (l.i + 1)){
  ArrayAppend(l.response.body["result"], StructNew());
  l.eventIndex = ArrayLen(l.response.body["result"]);
  l.response.body["result"][l.eventIndex]["id"] = l.events.id[l.i];
  l.response.body["result"][l.eventIndex]["start"] = DateDiff("s","1/1/1970",l.events.startdate[l.i]) * 1000;
  l.response.body["result"][l.eventIndex]["end"] = DateDiff("s","1/1/1970",l.events.enddate[l.i]) * 1000;
  l.response.body["result"][l.eventIndex]["title"] = l.events.title[l.i];
  l.response.body["result"][l.eventIndex]["class"] = "class";
  l.response.body["result"][l.eventIndex]["url"] = l.url;
}

数组中的记录是否比
recordCount
多?仅供参考-您可以使用
l.i++
而不是
l.i=(l.i+1)
不确定最终结果是什么,但可以使用
serializedJSON()
将您的查询转换为JSON。我不知道这是否是您的问题,但您在向数组追加结构方面有点老套。不追加并清空结构,然后填充最后一个数组元素的结构:填充新结构,然后追加它。这将使您的代码更加整洁。我的意思是:这与你的问题无关,但是。。将列命名为“url”是个坏主意,因为
url
在CF.So中是保留字。如果可能,您应该重命名或别名该列。请参阅上面的我的评论。您编写的代码比您需要/应该编写的代码多得多。在ColdFusion 8的cfscript中,隐式创建结构似乎不起作用。它给了我“缺少参数名”。@gdscei-IIRC,支持隐式结构,但在另一个函数中创建不受支持。因此,您需要修改示例以在一行上创建结构。然后将其附加到另一行的数组中<代码>。在我看来,这种风格更具可读性。不管语法如何,构建结构然后附加它比附加一个空结构然后计算数组的长度并将结构键插入恰好位于数组末尾的结构中重复的代码要少。而且,不得不这样描述它。。。这也更符合逻辑;-)是的,我忘了带标签,通常我会加上。我们有一个支持CF8的政策,所以我们可能会坚持两年。这就是我使用“CF的死版本”的原因。