Ваш вопрос немного сбивает с толку;)
Если сессия [url.sessionSQL] ['SQL_ALL'] содержит имя переменной, вы можете использовать structKeyExists, чтобы убедиться, что переменная существует в определенной области.
<cfif structKeyExists(scopeToCheck, "TestForThisVariableName")>
... ie
<cfif structKeyExists(variables, session[url.sessionSQL].SQL_ALL)>
С другой стороны, если вы просто хотите проверить, существуют ли переменные сеанса
<cfif structKeyExists(session, url.sessionSQL) AND
structKeyExists(session[url.sessionSQL], "SQL_ALL")>
В любом случае, вам не нужна функцияvalu ().
Обновление: Из комментариев ключевое различие между IsDefined
и StructKeyExists
составляет точность . IsDefined проверяет целый список областей действия при определении, существует ли переменная. Обычно (хотя и не всегда) это нежелательно, поскольку может привести к неожиданным результатам, если вы забудете, что конкретная переменная существует в нескольких областях. (Использование IsDefined
внутри функции является ярким примером.) Если вы специально хотите проверить несколько областей действия, тогда IsDefined()
более уместно. В противном случае я бы придерживался StructKeyExists
, так как его результаты менее неоднозначны.