문제

개발자 안내서의 116 페이지는 "CFLOOP 태그와 달리 CFScript for-in 루프는 쿼리 및 목록을 통한 루핑에 대한 내장 지원을 제공하지 않습니다."

Q : ColdFusion 9의 새 스크립트 구문을 사용하여 목록을 어떻게 반복합니까?

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
도움이 되었습니까?

해결책

ListToArray를 시도한 다음 CF9의 어레이에 대한 for-in 구조를 다음과 같이 사용할 수 있습니다.

<cfscript>
aCol = listToArray (qry.ColumnList);

for( fieldName in aCol ){
    form[fieldName]  = qry[fieldName][1];
}

</cfscript>

다른 팁

<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>

위의 내용의 버전을 더 잘 편집하십시오.

<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>

목록을 먼저 배열로 바꿀 것입니다. ListGetAt() 루프에서 N 시간이라고 불리는 것이 효율적이지 않습니다. ArrayLen() 그러나 매우 빠르야합니다.

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

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top