Coldfusion 如何在结构中设置动态键名?

Coldfusion 如何在结构中设置动态键名?,coldfusion,coldfusion-10,coldfusion-11,Coldfusion,Coldfusion 10,Coldfusion 11,我正在循环查询,希望动态设置结构键的名称及其值。但我似乎无法让它工作,因为它没有正确地解释动态值——它认为这是键的实际名称。这就是我的意思 <cfloop query="rsSettings"> <cfset APPLICATION.Config.Settings[rsSettings.CompanyID] = StructNew()> <cfset APPLICATION.Config.Settings[rsSettings.CompanyID].#rsSet

我正在循环查询,希望动态设置结构键的名称及其值。但我似乎无法让它工作,因为它没有正确地解释动态值——它认为这是键的实际名称。这就是我的意思

<cfloop query="rsSettings">
 <cfset APPLICATION.Config.Settings[rsSettings.CompanyID] = StructNew()>
 <cfset APPLICATION.Config.Settings[rsSettings.CompanyID].#rsSettings.Name#" = rsSettings.SettingValue/>
</cfloop>
我需要rsSettings.Name部分是存储在该记录集中的名称值,例如MaxOrders

我试着用引号括起来,但没用


如何使其接受动态键名?

要在结构中生成动态键,需要遵循方括号表示法。您可以按如下方式进行操作:

<cfloop query="rsSettings">
     <cfset APPLICATION.Config.Settings[rsSettings.CompanyID] = StructNew()>
     <cfset APPLICATION.Config.Settings[rsSettings.CompanyID][rsSettings.Name] = rsSettings.SettingValue/>
</cfloop>

要在结构中生成动态键,需要遵循方括号表示法。您可以按如下方式进行操作:

<cfloop query="rsSettings">
     <cfset APPLICATION.Config.Settings[rsSettings.CompanyID] = StructNew()>
     <cfset APPLICATION.Config.Settings[rsSettings.CompanyID][rsSettings.Name] = rsSettings.SettingValue/>
</cfloop>

[rsSettings.CompanyID]正在做您想要做的事情,因此将它们链接到[rsSettings.CompanyID]。[rsSettings.Name]StructInsert函数是一种非常简单的方法,可以精确地执行您所说的操作。如果这是在我们昨天讨论的CFC中,请将Config放在CFC的变量范围中,并将CFC本身放在应用范围中。另外,您真的不想为每个查询都使用structNew…否则您将重置每行的结构。[rsSettings.CompanyID]正在执行您想要的操作,因此将它们链接到[rsSettings.CompanyID]。[rsSettings.Name]StructInsert函数是一种非常简单的方法,可以精确地执行您所说的操作。如果这是在我们昨天讨论的CFC中,请将Config放入CFC的variables范围,并将CFC本身放入application范围。此外,你真的不想为每一个查询都使用structNew…否则你会在每一行上重置结构。正如Joe指出的,对于rsSettings查询中的每个元素,你将创建一个新的结构,有效地覆盖上一次迭代中的值。嘿@ScottStroz,感谢我指出这一点。我已经更新了我的答案来解决这个问题。现在的问题是,当设置发生更改时,如何在应用程序范围内不更新设置。@ScottStroz每当公司管理员更新其首选项时,我都会启动RefreshSettings函数,该函数只会更新其公司ID的应用程序范围变量。正如Joe指出的,对于rsSettings查询中的每个元素,您将创建一个新的结构,有效地覆盖上一次迭代中的值。我已经更新了我的答案以解决这个问题。现在的问题是,当设置发生更改时,如何在应用程序范围内不更新设置。@ScottStroz每当公司管理员更新其首选项时,我都会启动RefreshSettings函数,该函数只会更新其公司ID的应用程序范围变量。