Domanda

Pagina 116 della guida dello sviluppatore dice "A differenza del tag cfloop, cfscript per-in loop non forniscono supporto incorporato per ciclare su query e liste".

D: Come faccio ad anello su un elenco utilizzando la nuova sintassi di script in ColdFusion 9

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>
È stato utile?

Soluzione

Si può anche provare il listToArray e quindi utilizzare il per-in per costruire le matrici in CF9 come:

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

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

</cfscript>

Altri suggerimenti

<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 Più bello (forse un po 'più veloce, anche, per i cicli davvero pesanti) la versione di quanto sopra:

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

Vorrei trasformare la lista in un array prima. ListGetAt() non è efficiente per essere chiamato n volte in un ciclo. ArrayLen() tuttavia dovrebbe essere abbastanza veloce.

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

for (i = 1; i <= ArrayLen(arr); i++)
{
    fieldName = arr[i];
    form[FieldName] = qry[FieldName][1];
}
</cfscript>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top