سؤال

Page 116 من دليل المطور يقول "على عكس علامة Cfloop، لا توفر CFScript for-in-in-in في الدعم المدمج للاحتياج حول الاستعلامات والقوائم."

س: كيف يمكنني حلقة عبر قائمة باستخدام بناء جملة البرنامج النصي الجديد في ColdFusion 9؟

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
هل كانت مفيدة؟

المحلول

يمكنك أيضا تجربة ListtoArray ثم استخدم "إنشاء" للحصول على صفائف في CF9 ك:

<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