我有一个包含结构数组的对象,生成它的代码循环查询,从查询的每一行中获取不同的值并填充一个结构,当该行完成后,它将它附加到一个数组中,然后该过程再次开始:
<cfscript>
variables.x = 1;
variables.aArray = [];
// loop over my query
while(variables.x lte variables.qQuery.recordcount){
variables.stStruct = {};
variables.stStruct.nID = variables.qQuery.id[variables.x];
variables.stStruct.sText = variables.qQuery.text[variables.x];
//etc...
arrayAppend(variables.aArray,variables.stStruct);
variables.x++;
}
variables.oObject.setArray(variables.aArray);
</cfscript>
稍后在我的代码中,我希望能够仅使用 nID 作为指导来提取有关该数组中项目的详细信息。我不知道该 nID 的数组位置,这意味着要使用一种复杂的方法来尝试找到它。
我想通过更改上面的代码来创建一个位置结构。
<cfscript>
variables.x = 1;
variables.aArray = [];
variables.stTracker = {};
while...yadda
variables.stStruct = {};
yadda yadda
structInsert(variables.stTracker,"variables.qQuery.id[variables.x]","variables.x");
variables.x++;
while end
variables.oObject.setArray(variables.aArray);
variables.oObject.setTracker(variables.stTracker);
</cfscript>
这意味着我可以做类似 variables.nPosition = structFindKey(variables.oObject.getTracker(),'88')[1].value;
的事情。这仍然感觉很不雅,我想知道我是否遗漏了一些使这比我正在做的事情容易得多的东西。
如果有一个使用 java 来解决这个问题的解决方案,我会很高兴。
最佳答案
我建议执行 Query of Queries,而不是从现有查询构建结构数组。 .它将允许您使用 SQL 语句查询内存中现有的结果集。这是假设您需要的所有数据都已在现有查询中可用(听起来像是来自您的问题)。
查询的示例查询是:
<cfquery dbtype="query" name="qoqexample">
SELECT id, text, other_columns
FROM variables.qQuery
WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#nID#">
</cfquery>
关于java - coldfusion 在数组中查找结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316594/