复杂对象类型无法转换为简单值

时间:2014-02-06 14:42:14

标签: coldfusion coldfusion-10

使用:CF10

我将结构的键值存储在变量中:

<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变量时它会这样做)。我可能会略微混淆我的解释,但我认为它是正确的。

1 个答案:

答案 0 :(得分:3)

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

编辑:非cfscript按要求

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

StructFindValue返回一个结构数组,其中包含有关与该值匹配的键的信息。

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

您的问题中不需要任何#字符(我知道您最近何时何时不使用它们)