Verwenden Sie nicht Evaluate()
für solche Dinge! Es ist langsam und sollte vermieden werden .
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo" & i][query.CurrentRow]>
</cfloop>
Oder, wenn Sie möchten:
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo#i#"][query.CurrentRow]>
</cfloop>
Evaluate()
dient der Auswertung von Codebits. Verwenden Sie es nicht für Dinge, die auf elegantere, sprachintegrierte und angemessenere Weise gelöst werden können.
EDIT :
Wenn Sie auf Abfrageobjekte mit der "spitzen Klammer"-Syntax zugreifen, müssen Sie den (1-basierten) Zeilennummernindex ( query["foo#i#"][RowNum]
). Bei Verwendung der traditionellen "Punkt"-Syntax ( query.foo1
), ist die aktuelle Zeile implizit.
Um explizit auf die aktuelle Zeile zuzugreifen, verwenden Sie die QueryObject.CurrentRow
Eigentum. Es könnte aber jede positive ganze Zahl bis zu QueryObject.RecordCount
. Eine Entfernungsprüfung wird empfohlen für alles, was nicht CurrentRow
.
Dies eröffnet ein interessantes Feld: Sie können nun Abfrageobjekte mit "wahlfreiem Zugriff" verwenden. Früher (vor CFMX) konnte man sie nur von Anfang bis Ende iterieren und die gesuchten Dinge herausziehen. Jetzt ist es wie eine verschachtelte Struktur/Array-Datenstruktur, die Sie auf verschiedene Weise verwenden können.