Arrays ColdFusion 8阵列查找替代品
我有一个数组,它的结构是ImageID和Custnum。 我需要找到一个特定的ImageID并检索它的Custnum。 我使用的是ColdFusion 8,它没有ArrayFind命令。Arrays ColdFusion 8阵列查找替代品,arrays,coldfusion,coldfusion-8,Arrays,Coldfusion,Coldfusion 8,我有一个数组,它的结构是ImageID和Custnum。 我需要找到一个特定的ImageID并检索它的Custnum。 我使用的是ColdFusion 8,它没有ArrayFind命令。 在不循环每个项目的情况下,我如何做到这一点?谢谢。您的问题可能在这里得到了某种程度的回答“”,但除了循环之外,我看不到任何其他方法 您始终可以创建和使用UDF,但它必须使用循环 你到底为什么不想使用循环呢?数组中有那么多元素吗?只要记住在找到元素后使用cfbreak停止遍历数组的其余部分。鉴于您的情况,我认为a
在不循环每个项目的情况下,我如何做到这一点?谢谢。您的问题可能在这里得到了某种程度的回答“”,但除了循环之外,我看不到任何其他方法 您始终可以创建和使用UDF,但它必须使用循环
你到底为什么不想使用循环呢?数组中有那么多元素吗?只要记住在找到元素后使用
cfbreak
停止遍历数组的其余部分。鉴于您的情况,我认为arrayFind()
无论如何都不会对您有多大帮助,因为要使用arrayFind()
查找内容,您需要确切地知道您要查找的内容。虽然您知道您的ImageID
,但您不知道与之相关的Custnum
(因此您的潜在问题)
CF中没有任何本机的东西可以帮助您,但是有一个UDF,它会起作用
它是为CF9编写的,但很容易后端口到CF8。修改后的CF8友好版本-如下所示:
<cfscript>
a = [
{ImageID=1, Custnum=1},
{ImageID=2, Custnum=2},
{ImageID=3, Custnum=3},
{ImageID=4, Custnum=4}
];
testStruct = {a=a};
result = structFindKeyWithValue(testStruct, "ImageID", 2, "ONE");
function structFindKeyWithValue(struct, key, value, scope){
var keyResult = false;
var valueResult = [];
var i = 0;
if (!isValid("regex", arguments.scope, "(?i)one|all")){
throw(type="InvalidArgumentException", message="Search scope #arguments.scope# must be ""one"" or ""all"".");
}
keyResult = structFindKey(struct, key, "all");
for (i=1; i <= arrayLen(keyResult); i++){
if (keyResult[i].value == value){
arrayAppend(valueResult, keyResult[i]);
if (scope == "one"){
break;
}
}
}
return valueResult;
}
</cfscript>
<cfdump var="#result#">
a=[
{ImageID=1,Custnum=1},
{ImageID=2,Custnum=2},
{ImageID=3,Custnum=3},
{ImageID=4,Custnum=4}
];
testStruct={a=a};
结果=structFindKeyWithValue(testStruct,“ImageID”,2,“一”);
函数structFindKeyWithValue(结构、键、值、范围){
var-keyResult=false;
var valueResult=[];
var i=0;
如果(!isValid(“regex”,arguments.scope,(?i)one | all”)){
throw(type=“InvalidArgumentException”,message=“搜索范围”arguments.scope必须为“一”或“全部”);
}
keyResult=structFindKey(struct,key,“all”);
对于(i=1;我感谢这很有帮助!那么如何将此脚本用于数组中的数组。没有什么不同。structFindKey()/~Value()将遍历尽可能多的数组级别以定位他们检查的结构。嗯。我尝试过,但没有结果。你能检查一下链接看看我可能做错了什么吗?我所能看到的只是输出,这无助于我猜测你正在运行的代码。你能把你的代码放在gist或pastebin之类的东西中吗?这些代码对我来说没有多大用处我没有权限访问你的数据库,所以我无法运行代码来查看我得到了什么。你能提供一些独立的代码吗?但表面上看,它看起来都是合法的。所以有点令人费解。