【发布时间】:2019-08-03 22:26:06
【问题描述】:
我正在循环一个查询,构建一个结构数组
<cffunction name="QueryConvert" returntype="any" output="false">
<cfargument name="q" type="query" required="yes">
<cfargument name="page" type="numeric" required="no" default="1">
<cfargument name="rows" type="numeric" required="no" default="500">
<cfset var result = structnew()>
<cfset var rowStruct = structnew()>
<cfset var col = "">
<cfset result["page"] = arguments.page>
<cfset result["total"] = ceiling(arguments.q.TotalrecordCount/arguments.rows)>
<cfset result["records"] = arguments.q.TotalrecordCount>
<cfset result["rows"] = arraynew(1)>
<cfset queryDeleteColumn(arguments.q,'TotalrecordCount')>
<cfset queryDeleteColumn(arguments.q,'rowNum')>
<cfset columnLabels = QueryColumnArray(arguments.q)>
<cfset rowStruct = [:]><!--- Tada an ordered struct --->
<cfloop array="#columnLabels#" item="col">
<cfset rowStruct[col] = q["#col#"]>
</cfloop>
<cfdump var="#result#" abort>
<cfreturn result />
</cffunction>
但是当我查看嵌套结构时,键的顺序都混淆了。我希望它们与数据库表中列名的顺序相匹配。
【问题讨论】:
-
arguments.q.getMeta().getColumnLabels()是否返回排序后的列表? -
然而,这个页面说
getColumnlist是说/应该按原始顺序返回列名,而不是按字母顺序排序:burnignorance.com/coldfusion-application-development/…
标签: struct coldfusion cfml lucee cfloop