CFML 使用 StructFindValue() 查找和替换结构内的字符串值

CFML using StructFindValue() to find and replace string values inside of a structure

问题:如何使用StructValueFind()returns的path值给键[=10赋新值=] 指向?

我希望在结构中的所有值中搜索特定字符串,然后用不同的值替换该字符串。

我能够使用 StructFindValue() 找到所有出现的字符串,其中 returns 具有键 keyowner 的结构数组, 和 path。我假设 path 允许我设置一个新的 value/replace 找到的字符串。

根据 Adobe's CFML 9 documentation for StructFindValue()path 值为...

Path: string which could be used to reach the found key

但是我在任何地方都找不到如何使用 path 的值来找到找到的键,并专门为该键分配一个新值。

你不需要弄乱路径:structFindValue() returns 的结果已经直接引用了有问题的子结构(在 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>