Цикличное выполнение по спискам в cf9

Страница 116 Руководства разработчика говорит "В отличие от тега cfloop, CFScript для - в циклах не оказывают встроенную поддержку для цикличного выполнения по запросам и спискам".

Q: Как я циклично выполняюсь по списку с помощью нового синтаксиса сценария в ColdFusion 9?

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
12
задан James A Mohler 21 December 2013 в 18:30
поделиться

2 ответа

Сначала я бы превратил список в массив. ListGetAt() не эффективно вызывать n раз в цикле. ArrayLen(), однако, должен быть достаточно быстрым.

<cfscript>
arr = ListToArray(qry.Columnlist);

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
5
ответ дан 2 December 2019 в 04:17
поделиться
<cfscript>
  var i = 0;
  var l = ListLen(qry.Columnlist);
  var FieldName = "";
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = ListGetAt(qry.Columnlist, i);
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>

EDIT Nicer (может быть даже немного быстрее, для действительно тяжелых циклов) версия выше:

<cfscript>
  var i = 0;
  var Fields = ListToArray(qry.Columnlist);
  var FieldName = "";
  var l = arrayLen(Fields);
  for (i = 1; i lte l; i = i + 1)  // you also can use i++ instead
  {
    FieldName = Fields[i];
    form[FieldName] = qry[FieldName][1];
  }
</cfscript>
12
ответ дан 2 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: