【问题标题】:Coldfusion and Associative Arrays冷聚变和关联阵列
【发布时间】:2012-07-13 19:40:23
【问题描述】:

我习惯于处理我的关联数组 PHP 样式,我会有类似以下的内容

array[day][time] = count

这让我可以轻松地计算某些东西出现的次数,并且它是一个易于使用的结构。就我而言,我正在从数据库中读取结果集,并且让这样的东西正常工作会非常有帮助

我将如何在 Coldfusion 中做同样类型的事情?

【问题讨论】:

  • 附带说明 - PHP 关联数组是有序的,而 CF 结构 不是。如果需要依赖结构中项目的顺序,则需要实现 Java HashMap。
  • 更具体地说,LinkedHashMap 用于保存键创建日期顺序,TreeMap 用于通过您选择的算法对键进行排序,或者 HashMap 内部有效排序,看起来像是随机的。
  • cf 中的关联数组通常称为“结构”。 struct[day][time] = count 将日期和时间解释为变量。要将它们设置为新键,请将它们用引号引起来。 struct['day']['time'] = count.

标签: arrays coldfusion associative-array


【解决方案1】:

这在我看来就像一个结构 - 您可以按照自己习惯的方式轻松创建它:

<cfscript>

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

</cfscript>

或者使用旧的语法可能更好地概括它。

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

还要记住,ColdFusion 查询对象已经是一个非常有用的小数据结构,其格式为 queryName[struct][row] - 并且查询查询(您可以利用 SQL 来简单地查询查询对象)可以轻松实现也可以访问这些数据。

希望这对您有所帮助。祝你好运。

【讨论】:

  • struct 也支持括号表示法,但您需要在引号中提供它们:myStruct['day']['count'] = x;如果您是 ColdFusion 9.01+,您可以简单地使用它来隐式定义结构:
  • 嗯,'day' 、'time' 和 'count' 是动态值(我应该更清楚)。
  • Reg - 你的意思是像:mystruct['11/20/2010']['4:00 am'] = 1234; ...如果是这样,您可以 这样做(使用括号表示法),但它可能会让您有点胃灼热。不确定用任何一种语言是否是个好主意:)
  • 这将与此类似。我已经让它工作了(#data[qView.adate][qView.time]#),但我不确定如何检查变量是否已初始化
  • 或者只是点进去而不调用structNew()。 :)
【解决方案2】:

这是 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#"> 

【讨论】:

  • 我更改了您的变量名,因为 this 是保留字(指 cfc 中的公共变量),因此可能会导致错误/混淆。
【解决方案3】:

您也可以使用 Coldfusion 阵列来做到这一点。

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

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

请记住,Coldfusion 数组从索引 1 开始,而不是 0。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 2014-02-16
    • 2012-07-01
    • 2011-04-08
    • 1970-01-01
    • 2014-11-04
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多