Coldfusion 在结构数组中搜索特定键值并返回结构

Coldfusion 在结构数组中搜索特定键值并返回结构,coldfusion,Coldfusion,我有时会对数组和结构感到困惑。但是,我想我现在理解正确了,我下面的数据在技术上是一组结构(如果我错了,请纠正我): 我希望按ID(例如,2)搜索此数据,并返回该结构的其余数据(CompanyName、FirstName、LastName等) 我该怎么做?(如果我的数据不是可搜索格式,请告诉我如何更改它。) 谢谢大家! @Leigh的建议很好。因为此时内存中已经有了数据,即使数据非常大,也可以通过数组进行循环,这将非常快。我喜欢使用CFScript来完成这类任务。下面是一个使用您提供的部分数据

我有时会对数组和结构感到困惑。但是,我想我现在理解正确了,我下面的数据在技术上是一组结构(如果我错了,请纠正我):


我希望按ID(例如,2)搜索此数据,并返回该结构的其余数据(CompanyName、FirstName、LastName等)

我该怎么做?(如果我的数据不是可搜索格式,请告诉我如何更改它。)


谢谢大家!

@Leigh的建议很好。因为此时内存中已经有了数据,即使数据非常大,也可以通过数组进行循环,这将非常快。我喜欢使用CFScript来完成这类任务。下面是一个使用您提供的部分数据的工作示例:

<cfscript>
    // array of structs version
    contacts = [{
        ID = "1",
        CompanyName = "Company One",
        FirstName = "Elliott",
        LastName = "Smith"
    },{
        ID = "2",
        CompanyName = "Company Two",
        FirstName = "Matthew",
        LastName = "Ryan"
    }];

    for(i=1; i <= arrayLen(contacts); i++) {
        if (contacts[i]['id'] EQ '2') {
            writeoutput(contacts[i]['CompanyName'] & '<br />');
            writeoutput(contacts[i]['FirstName'] & '<br />');
            writeoutput(contacts[i]['LastName'] & '<br />');
            break;
        }
    }
</cfscript>

//结构版本数组
联系人=[{
ID=“1”,
CompanyName=“公司一号”,
FirstName=“Elliott”,
LastName=“史密斯”
},{
ID=“2”,
CompanyName=“第二公司”,
FirstName=“Matthew”,
LastName=“Ryan”
}];

对于(i=1;i@Leigh的建议很好。因为此时内存中已经有了数据,即使数组非常大,循环也会很快。我喜欢使用CFScript执行此类任务。下面是一个使用您提供的部分数据的工作示例:

<cfscript>
    // array of structs version
    contacts = [{
        ID = "1",
        CompanyName = "Company One",
        FirstName = "Elliott",
        LastName = "Smith"
    },{
        ID = "2",
        CompanyName = "Company Two",
        FirstName = "Matthew",
        LastName = "Ryan"
    }];

    for(i=1; i <= arrayLen(contacts); i++) {
        if (contacts[i]['id'] EQ '2') {
            writeoutput(contacts[i]['CompanyName'] & '<br />');
            writeoutput(contacts[i]['FirstName'] & '<br />');
            writeoutput(contacts[i]['LastName'] & '<br />');
            break;
        }
    }
</cfscript>

//结构版本数组
联系人=[{
ID=“1”,
CompanyName=“公司一号”,
FirstName=“Elliott”,
LastName=“史密斯”
},{
ID=“2”,
CompanyName=“第二公司”,
FirstName=“Matthew”,
LastName=“Ryan”
}];

对于(i=1;i@Leigh的建议很好。因为此时内存中已经有了数据,即使数组非常大,循环也会很快。我喜欢使用CFScript执行此类任务。下面是一个使用您提供的部分数据的工作示例:

<cfscript>
    // array of structs version
    contacts = [{
        ID = "1",
        CompanyName = "Company One",
        FirstName = "Elliott",
        LastName = "Smith"
    },{
        ID = "2",
        CompanyName = "Company Two",
        FirstName = "Matthew",
        LastName = "Ryan"
    }];

    for(i=1; i <= arrayLen(contacts); i++) {
        if (contacts[i]['id'] EQ '2') {
            writeoutput(contacts[i]['CompanyName'] & '<br />');
            writeoutput(contacts[i]['FirstName'] & '<br />');
            writeoutput(contacts[i]['LastName'] & '<br />');
            break;
        }
    }
</cfscript>

//结构版本数组
联系人=[{
ID=“1”,
CompanyName=“公司一号”,
FirstName=“Elliott”,
LastName=“史密斯”
},{
ID=“2”,
CompanyName=“第二公司”,
FirstName=“Matthew”,
LastName=“Ryan”
}];

对于(i=1;i@Leigh的建议很好。因为此时内存中已经有了数据,即使数组非常大,循环也会很快。我喜欢使用CFScript执行此类任务。下面是一个使用您提供的部分数据的工作示例:

<cfscript>
    // array of structs version
    contacts = [{
        ID = "1",
        CompanyName = "Company One",
        FirstName = "Elliott",
        LastName = "Smith"
    },{
        ID = "2",
        CompanyName = "Company Two",
        FirstName = "Matthew",
        LastName = "Ryan"
    }];

    for(i=1; i <= arrayLen(contacts); i++) {
        if (contacts[i]['id'] EQ '2') {
            writeoutput(contacts[i]['CompanyName'] & '<br />');
            writeoutput(contacts[i]['FirstName'] & '<br />');
            writeoutput(contacts[i]['LastName'] & '<br />');
            break;
        }
    }
</cfscript>

//结构版本数组
联系人=[{
ID=“1”,
CompanyName=“公司一号”,
FirstName=“Elliott”,
LastName=“史密斯”
},{
ID=“2”,
CompanyName=“第二公司”,
FirstName=“Matthew”,
LastName=“Ryan”
}];

对于(i=1;我知道如果这些数据在数据库中会容易得多,但在这种情况下我不能这样做。是的,这是一个结构数组。好的,唯一的方法是循环遍历数组元素并检查单个
id
值是否匹配。也就是说,如果需要通过特定键访问元素,则将它们存储在结构可能更好。(除非您需要维护特定的顺序)如果我的数据不是可搜索的格式,请告诉我如何更改它。您可以从数据创建自己的查询记录集。然后使用SQL对其运行查询。(编辑)@Michael-使用嵌套结构。语法基本相同,只需使用ID
1,2,
作为键ie
。请记住,您可能会以不同的方式存储数据。例如,将其存储为JSON-然后在加载到CF时反序列化。请注意,文件存储方法不可扩展…出于好奇,为什么你不使用数据库吗?你们会恨我的。一点也不。重要的是,你使用数据库的路径要好得多。记住,你可以随时使用
queryNew
来模拟数据库查询。顺便说一句:请随意使用Mag的答案。我知道如果这些数据在数据库中,会容易得多,但在这种情况下cenario I不能这样做。是的,这是一个结构数组。好吧,唯一的方法是循环数组元素并检查单个
id
值是否匹配。也就是说,如果需要通过特定键访问元素,那么将它们存储在结构中可能会更好。(除非需要维护特定顺序)如果我的数据不是可搜索的格式,请告诉我如何更改它。您可以从数据创建自己的查询记录集。然后使用SQL对其运行查询。(编辑)@Michael-使用嵌套结构。语法基本相同,只需使用ID
1,2,
作为键ie
。请记住,您可能会以不同的方式存储数据。例如,将其存储为JSON-然后在加载到CF时反序列化。请注意,文件存储方法不可扩展…出于好奇,为什么你不使用数据库吗?你们会恨我的。一点也不。重要的是,你使用数据库的路径要好得多。记住,你可以随时使用
queryNew
来模拟数据库查询。顺便说一句:请随意使用Mag的答案。我知道如果这些数据在数据库中,会容易得多,但在这种情况下cenario I不能这样做。是的,这是一个结构数组。好吧,唯一的方法是循环数组元素并检查单个
id
值是否匹配。也就是说,如果需要通过特定键访问元素,那么将它们存储在结构中可能会更好。(除非需要维护特定顺序)如果我的数据不是可搜索的格式,请告诉我如何更改它。您可以从数据创建自己的查询记录集。然后使用SQL再次运行查询