2012-07-13 81 views
1

我来处理我的关联数组PHP的风格,我会像下面ColdFusion和关联数组

array[day][time] = count 

这让我很容易地计算出现的次数东西的数量和它的结构简单跟...共事。在我这里,我正在阅读数据库中的结果集,并且获得类似这样的工作将会非常有用

如何在Coldfusion中执行相同类型的事?

+2

正如一个侧面说明 - PHP的关联数组,而CF结构_are not_订购。如果您需要依赖结构中项目的顺序,则需要实现Java HashMap。 – 2012-07-13 23:35:58

+0

更具体地说,一个LinkedHashMap用于保存键创建的日期顺序,TreeMap用于按照您选择的算法或HashMap对键进行排序,该HashMap内部高效地排序,看起来像是随机的。 – 2012-07-19 01:50:21

+0

cf中的关联数组通常称为“结构”。 'struct [day] [time] = count'将日期和时间解释为变量。要将它们设置为新键,请将它们包装在引号中。 'struct ['day'] ['time'] = count'。 – 2012-07-19 01:54:16

回答

10

这看起来像一个结构,我 - 您可以轻松地创建你习惯的方式:

<cfscript> 

    myStruct = { day= { time = count}}; 

</cfscript> 

或者使用旧的语法,也许概括了它更好。

<cfset mySTruct = structNew()/> 
<Cfset mySTruct.day = structNew()/> 
<Cfset myStruct.day.time = count/> 

别忘了,一个ColdFusion查询对象是已经与queryName [结构] [行]的格式非常有用的小数据构建 - 和查询的查询(在那里你可以利用SQL简单查询查询对象)也可以轻松访问这些数据。

希望这可以帮助您注册。祝你好运。

+0

结构支持括号表示法,但您需要在引号中提供它们:myStruct ['day'] ['count'] = x;如果你是ColdFusion 9.01+,你可以简单地使用它来简单定义结构: BKK 2012-07-13 20:07:20

+0

那么, ,'时间'和'计数'是动态值(我应该更清楚)。 – 2012-07-13 20:16:49

+0

Reg - 你的意思是:mystruct ['11/20/2010'] ['4:00 am'] = 1234; ...如果是的话,你可以做到这一点(使用括号表示法),但它可能会给你一点胃灼热。不知道这是否是*语言中的好主意:) – 2012-07-13 20:28:34

3

这是一个后续的评论Reginold了有关检查是否结构定义:

<cfset thisvar = '04/MAR/2012'> 
<cfset thatvar = '04:11'> 
<cfset myStruct[thisvar][thatvar] = 'test'> 

<!--- Check first key, then second ---> 
<cfif structKeyExists(myStruct,thisvar) and structKeyExists(mystruct[thisvar],thatvar)> 
    Both Keys Exist.<hr> 
</cfif> 

<!--- Alternative Check ---> 
<cfif isDefined('myStruct.#thisvar#.#thatvar#') > 
    Key Exists.<hr> 
</cfif> 

<cfdump var="#myStruct#"> 
+0

我改变了你的变量名称,因为'this'是一个保留字(指的是cfc中的公共变量),因此可能导致错误/混淆。 – 2012-07-13 22:11:30

0

您可以使用ColdFusion数组做到这一点,太。

array = [[], []];// initialize array 

array[1][1] = 1;// set a value in the array 

只要记住,ColdFusion的数组的索引为1开始,不是0