CF9:这个评估语句评估的是什么?
CF9: What is this evaluate statement evaluating?
我被卡住了,需要对此有新的看法,拜托。
我正在使用其他人的意大利面条代码,他们已经不在了,我花了很多时间弄清楚他们在评估什么。
<cfset surveyCount = 0>
<cfloop query="surveys">
<cfif evaluate("defaultReport" & ID)>
<cfset surveyCount = surveyCount + 1>
</cfif>
</cfloop>
在查询转储中,我看到了 9 条记录,这是我所期望的,但是因为评估失败,所以 surveyCount 没有增加。我没有看到 defaultReport
的任何列。在我使用 CF 的 15 年中,我一直避免使用 evaluate() ,现在当我需要分析它时,我完全不知所措。有人可以提供任何指导吗?
添加了 CFDump 图像(出于隐私和安全考虑,一些列名称已被删除):
更新一:
这个文件有很多 cfinclude 语句和很少的代码格式。结果,我忽略了一些 cfinclude 语句。我发现了以下内容。我仍在寻找,但想在挖掘时记录下来。
<cfloop query="surveys">
<cfscript>
variables["defaultReport" & ID] = evaluate(thisAssociation & "Price");
</cfscript>
</cfloop>
更新二:
转储变量范围,我确实确认了我正在寻找的变量(找到我在 UPDATE 中发布的查询我也提供了帮助)。 :)
您需要在查询之外查找变量。此变量的名称为 default#ID#
。可以叫。
variables.default#ID#
form.default#ID#
url.default#ID#
request.default#ID#
attributes.default#ID#
等等
基本上,ColdFusion 将遍历每个范围,直到找到某些东西。 (不,这不是一个好方法)
如果你必须清理它,我建议不要使用这种模棱两可的方法。简而言之,没有真正的方法知道它在评估什么。
他们想做的是增加 surveyCount
但前提是这个东西:evaluate("defaultReport" & ID)
计算为 true
.
从您的查询转储图片来看,ID 似乎是 144
、145
等数字...
在这种情况下,您可以将 evaluate("defaultReport" & ID)
视为 defaultReport144
、defaultReport145
等...(这些是代码中某处设置的变量)。
所以代码:
<cfif evaluate("defaultReport" & ID)>
<cfset surveyCount = surveyCount + 1>
</cfif>
变为(对于 144 的 ID,您的查询循环中的第一个)
<cfif defaultReport144>
<cfset surveyCount = surveyCount + 1>
</cfif>
以此类推...对于其他 ID
因此,在代码中搜索 defaultReport144
、defaultReport145
等变量设置为 true or false (0 or 1)
.
的位置
类似于:
<cfset defaultReport144 = true />
或者他们可能使用一些计算结果为真或假的表达式,例如:
<cfset defaultReport144 = [some expression] />
如果找不到,则可能是在设置这些 defaultReport...
变量的地方更改或删除了代码。
ColdFusion evaluate()
文档:
https://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f4e.html
我被卡住了,需要对此有新的看法,拜托。
我正在使用其他人的意大利面条代码,他们已经不在了,我花了很多时间弄清楚他们在评估什么。
<cfset surveyCount = 0>
<cfloop query="surveys">
<cfif evaluate("defaultReport" & ID)>
<cfset surveyCount = surveyCount + 1>
</cfif>
</cfloop>
在查询转储中,我看到了 9 条记录,这是我所期望的,但是因为评估失败,所以 surveyCount 没有增加。我没有看到 defaultReport
的任何列。在我使用 CF 的 15 年中,我一直避免使用 evaluate() ,现在当我需要分析它时,我完全不知所措。有人可以提供任何指导吗?
添加了 CFDump 图像(出于隐私和安全考虑,一些列名称已被删除):
更新一: 这个文件有很多 cfinclude 语句和很少的代码格式。结果,我忽略了一些 cfinclude 语句。我发现了以下内容。我仍在寻找,但想在挖掘时记录下来。
<cfloop query="surveys">
<cfscript>
variables["defaultReport" & ID] = evaluate(thisAssociation & "Price");
</cfscript>
</cfloop>
更新二:
转储变量范围,我确实确认了我正在寻找的变量(找到我在 UPDATE 中发布的查询我也提供了帮助)。 :)
您需要在查询之外查找变量。此变量的名称为 default#ID#
。可以叫。
variables.default#ID#
form.default#ID#
url.default#ID#
request.default#ID#
attributes.default#ID#
等等
基本上,ColdFusion 将遍历每个范围,直到找到某些东西。 (不,这不是一个好方法)
如果你必须清理它,我建议不要使用这种模棱两可的方法。简而言之,没有真正的方法知道它在评估什么。
他们想做的是增加 surveyCount
但前提是这个东西:evaluate("defaultReport" & ID)
计算为 true
.
从您的查询转储图片来看,ID 似乎是 144
、145
等数字...
在这种情况下,您可以将 evaluate("defaultReport" & ID)
视为 defaultReport144
、defaultReport145
等...(这些是代码中某处设置的变量)。
所以代码:
<cfif evaluate("defaultReport" & ID)>
<cfset surveyCount = surveyCount + 1>
</cfif>
变为(对于 144 的 ID,您的查询循环中的第一个)
<cfif defaultReport144>
<cfset surveyCount = surveyCount + 1>
</cfif>
以此类推...对于其他 ID
因此,在代码中搜索 defaultReport144
、defaultReport145
等变量设置为 true or false (0 or 1)
.
类似于:
<cfset defaultReport144 = true />
或者他们可能使用一些计算结果为真或假的表达式,例如:
<cfset defaultReport144 = [some expression] />
如果找不到,则可能是在设置这些 defaultReport...
变量的地方更改或删除了代码。
ColdFusion evaluate()
文档:
https://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f4e.html