2015-10-19 40 views
1

問題的內部字符串值:我如何使用pathStructValueFind()返回到一個新值分配給該鍵path點?CFML使用StructFindValue()來查找和替換的結構

我在尋找特定字符串的結構中的所有值,然後用不同的值替換該字符串。

我能找到該字符串的所有出現我在尋找使用StructFindValue()返回結構的鑰匙keyownerpath數組。我會假設path將允許我設置一個新值/替換找到的字符串。

Adobe's CFML 9 documentation for StructFindValue(),該path值是...

路徑:它可以用來串到達發現關鍵

但我找不到任何地方如何使用值爲path以達到找到的密鑰,並專門爲該密鑰分配新值。

回答

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> 
+0

正是我一直在尋找。謝謝@亞當 –

+0

不錯。以前沒用過。看起來像一個強大的功能。但是使用安全(性能明智)? – Pankaj

+0

@Pankaj我的理念是,任何事情都可以安全使用 - 性能明智 - 直到有證據表明這是一個問題。我不知道任何問題。 –