2009-04-21 67 views
8

我想測試:如何測試一個變量是否存在於ColdFusion結構中?

<cfif Exists(MyStruct["mittens"])> 
</cfif> 

如果「手套」項不存在MYSTRUCT,會是什麼回來? 0,還是「」?

什麼應該替代存在函數?

UPDATE

我試過,

<cfif IsDefined(MyStruct.mittens)> 

這也引發錯誤

元素手套在MYSTRUCT不確定的。

回答

35

爲了測試鍵的存在,我推薦:

<cfif StructKeyExists(MyStruct, "mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif StructKeyExists(MyStruct, key)> 

幕後這就要求java.util中的containsKey()方法。 ColdFusion結構所基於的映射。這可以說是找出密鑰是否存在的最快方法。

另一種方法是:

<cfif IsDefined("MyStruct.mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif IsDefined("MyStruct.#key#")> 

這個呼籲傳遞的字符串​​(或因此我認爲)在幕後,並告訴你,如果結果是一個變量引用。相比之下,這比StructKeyExists()慢。好的一面:您可以在一次調用中測試嵌套結構中的子密鑰:

<cfif IsDefined("MyStruct.with.some.deeply.nested.key")> 
2

找到了答案here

這是StructKeyExists

+0

IsDefined也可以,但速度較慢。 – Tomalak 2009-04-21 06:58:52

相關問題