2014-02-06 57 views
2

使用:CF10Complex对象类型不能被转换为简单的值

我存储一个结构的密钥值在变量作为这样:

<cfset ApplicationArea = '1'> 

我想找到如果此值存在在这样的结构中:

StructKeyExists(SESSION.Auth.AccessA, #ApplicationArea#) 

这一切都有效。然而,在SESSION.Auth.AccessA["1"]的结构内是更多的关键。我现在需要找到这个结构中是否存在某个键。这是我想出了但不工作:“复杂的对象类型不能转换为简单的值

StructFindValue(SESSION.Auth.AccessA[#ApplicationArea#], '3') GT 0 

我得到的错误

我想知道的价值'3'存在于SESSION.Auth.AccessA["1"]的结构中(它在我转储SESSION变量时执行此操作)。我可能会让我的解释有些困惑,但我认为它是正确的。

回答

3
<cfscript> 
if (ArrayLen(StructFindValue(SESSION.Auth.AccessA[ApplicationArea], '3', 'ALL'))) { 
    // it exists 
} else { 
    // it does not 
} 
</cfscript> 

编辑:如请求

<cfif ArrayLen(StructFindValue(SESSION.Auth.AccessA[ApplicationArea], '3', 'ALL'))> 
    <!--- it exists ---> 
<cfelse> 
    <!--- it does not ---> 
</cfif> 

StructFindValue非CFSCRIPT返回一个包含匹配值,该密钥的信息结构的阵列。

https://wikidocs.adobe.com/wiki/display/coldfusionen/StructFindValue

你不需要在你的问题(我知道你问什么时候,何时不最近使用它们)

+0

你能翻译这不使用请任何#字符的? –

+3

伙计,这是一个if语句。我认为这很简单。 –

+2

所有的设置,但认真的,寻求帮助是一回事,要求别人为你写代码并不是本网站的要点。下次尝试阅读您首先使用的功能的文档。它清楚地表明它返回一个数组。因此“复杂对象不能转换为简单值”错误。正如你在问题中显示的那样,数组永远不能与零相比。 –

相关问题