Arraylen偶尔会误解元素

时间:2013-06-24 15:53:56

标签: arrays coldfusion coldfusion-9

我遇到了一个奇怪的问题...我已经设置了一个用于创建数据表JSON对象的cfscript,偶尔我收到一个未处理的异常错误“无法找到位置X的元素”X通常是比我的数组实际上有一个,所以在我的情况下,我有一个数组中的44个元素,表达式错误始终指出“位置45无法找到”

继承了一些代码

/* 44 total items in this array*/
aColumns = ['nd_event_group_id','nd_event_id', 'pref_mail_name',  'request_status_code', "life_gift_pledge_ob_amt", 'activity', ... ];
/* this will return 44 */
iColumnsLen = ArrayLen(aColumns);

...

savecontent variable="rc.aaData" {
    for (i=1; i <= rc.qResult.RecordCount ; i++) {
      writeOutput('{');
      for (col=1; col <= iColumnsLen; col++) {
        // the next line is what is referenced by the expression error 
        // "The element at position 45 cannot be found"
        writeOutput('"#aColumns[col]#":#SerializeJSON(rc.qResult[aColumns[col]][i])#'); 

        writeOutput((col NEQ iColumnsLen) ? ',' : '');
      }
      writeOutput('}');
      writeOutput((i NEQ rc.qResult.RecordCount ) ? ',' : '');
    }
  };

关于这个问题的一个奇怪的部分是,我无法以任何精度重新创建错误,偶尔发生的是命中或错过的事情

此脚本由GET通过AJAX运行

任何想法?

1 个答案:

答案 0 :(得分:1)

从发布的评论中得出这个,听起来你有变量unVARed。所有函数局部变量都需要使用VAR关键字声明,或者在LOCAL范围内专门设置范围。

如果不这样做,变量对CFC实例是全局的,因此在函数之间共享。这听起来像是你的问题。

这些都在文档中:“CFC variables and scope”。