问题:如何使用path
返回的StructValueFind()
值为键path
指定新值?
我希望在结构中搜索特定字符串的所有值,然后用不同的值替换该字符串。
我能够找到我使用StructFindValue()
搜索的字符串的所有匹配项,该字符串返回一个结构数组,其中包含键key
,owner
和{{ 1}}。我假设path
允许我设置一个新值/替换找到的字符串。
根据Adobe's CFML 9 documentation for StructFindValue()
,path
值为......
路径:可用于到达找到的密钥的字符串
但我无法在任何地方找到如何使用path
的值来找到找到的密钥,并专门为该密钥指定一个新值。
答案 0 :(得分:6)
你不应该乱用路径:来自structFindValue()
的结果已经返回对所讨论的子结构的直接引用(在owner
键中)。
所以这类事应该可以解决问题:
<cfscript>
st = {
top={
middle1={lower1="value1",lower2="value2"},
middle2={lower3="value3",lower4="value4"}
}
};
writeDump(st);
value = structFindValue(st, "value3");
writeDump(value);
value[1].owner[value[1].key] = "new value";
writeDump(st);
</cfscript>