ear*_*efl 2 coldfusion evaluate
我正在尝试确定是否定义了具有变量名称的变量.请帮助我的语法......到目前为止我的尝试:
<cfif isDefined(Evaluate("session['#url.sessionSQL#']['SQL_ALL']"))>
<cfif isDefined('Evaluate("session[#url.sessionSQL#]")["SQL_ALL"]')>
<cfif isDefined(Evaluate("session['#url.sessionSQL#']['SQL_ALL']"))>
<cfif isDefined('session[Evaluate("#url.sessionSQL#")]["SQL_ALL"]')>
<cfif isDefined('session["#url.sessionSQL#"]["SQL_ALL"]')>
Run Code Online (Sandbox Code Playgroud)
谢谢.
你的问题有点令人困惑;)
如果session [url.sessionSQL] ['SQL_ALL']包含变量的名称,则可以使用structKeyExists来验证该变量是否存在于特定范围内.
<cfif structKeyExists(scopeToCheck, "TestForThisVariableName")>
... ie
<cfif structKeyExists(variables, session[url.sessionSQL].SQL_ALL)>
Run Code Online (Sandbox Code Playgroud)
另一方面,如果只想验证那些会话变量是否存在
<cfif structKeyExists(session, url.sessionSQL) AND
structKeyExists(session[url.sessionSQL], "SQL_ALL")>
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您都不需要evaluate()函数.
更新:从评论中,IsDefined和之间的关键区别StructKeyExists是精确度.IsDefined 在确定变量是否存在时检查整个范围列表.通常(尽管不总是)这是不合需要的,因为如果您忘记了多个范围中存在的特定变量,它可能会导致意外结果.(IsDefined在函数内部使用是一个很好的例子.)当你特别想要检查多个范围时,那么IsDefined()更合适.否则,我会坚持,StructKeyExists因为它的结果不那么模糊.