Question

Page 116 du guide du développeur dit « Contrairement à la balise cfloop, CFScript boucles pour en ne fournissent pas de support intégré pour le bouclage sur les requêtes et les listes. »

Q: Comment puis-je boucle sur une liste en utilisant la nouvelle syntaxe de script dans 9 ColdFusion

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
Était-ce utile?

La solution

Vous pouvez également essayer le listToArray puis utiliser la construction pour pour en tableaux dans CF9 comme:

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

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

</cfscript>

Autres conseils

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

Version EDIT Nicer (peut-être un peu plus vite même, pour les boucles très lourdes) de ce qui précède:

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

Je tournerais la liste dans un tableau premier. ListGetAt() n'est pas efficace pour appeler n fois dans une boucle. ArrayLen() devrait cependant être assez rapide.

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

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top