2012-07-13 85 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