Coldfusion Structinsert正在覆盖原始插入值
我有以下代码Coldfusion Structinsert正在覆盖原始插入值,struct,coldfusion,cfml,Struct,Coldfusion,Cfml,我有以下代码 <cfset x = StructNew()> <cfset y = StructNew()> <cfset y.name = "1"> <cfset y.id = "2"> <cfset structInsert(x,"item1",y)> <cfdump var="#x#"> 然后我添加此代码以插入另一组数据 <cfset y.name = "3"> <cfset y.id = "
<cfset x = StructNew()>
<cfset y = StructNew()>
<cfset y.name = "1">
<cfset y.id = "2">
<cfset structInsert(x,"item1",y)>
<cfdump var="#x#">
然后我添加此代码以插入另一组数据
<cfset y.name = "3">
<cfset y.id = "4">
<cfset structInsert(x,"item2",y)>
<cfdump var="#x#">
item1数据为什么会更改?从技术上讲,structInsert不会覆盖值—您是—执行此操作时:
<cfset y.name = "3">
<cfset y.id = "4">
<!--- show values before structInsert --->
<cfdump var="#x#">
话虽如此,除非使用structInsert()有特定的原因,否则现在使用结构或点表示法更为标准:
<cfset x.item1 = y> ... or
<cfset x["item1"] = y>
。。。或者,如果需要单独附加结构,请使用:
<cfset x = {}>
<cfset x["item1"] = {"name": "1", "id": "2"}>
<cfset x["item2"] = {"name": "3", "id": "4"}>
谢谢你。我会考虑所有这些。我现在用的是复制件。这样行,但是。。除非您确实需要复制结构中的所有键,否则创建一个新键会更简单。此外,使用{}
比所有单独cfset的IMO:-)传递引用与传递值更流畅、更短,这始终是一个有趣的讨论。:-)
<cfset y = structNew()>
<cfset y.name = "3">
<cfset y.id = "4">
<cfset x.item1 = y> ... or
<cfset x["item1"] = y>
<cfset x = { "item1": {"name": "1", "id": "2"}
, "item2": {"name": "3", "id": "4"}
}>
<cfset x = {}>
<cfset x["item1"] = {"name": "1", "id": "2"}>
<cfset x["item2"] = {"name": "3", "id": "4"}>