ColdFusion - 动态创建多维数组
ColdFusion - Create multidimensional array dynamically
我正在使用 CF 10。由于脚本是 运行,我正在创建一个数组,其中包含表示单个车辆的不同值。我正在使用
在我的脚本顶部初始化数组
<cfset myArray = ArrayNew(1)>
然后,正如我 运行 我的脚本一样,我将使用...
<cfset temp = ArrayAppend(myArray, myQuery.VIN)>
一切正常,但我想做的是在到达脚本中的每个部分后,我想更新当前部分查询中的所有 VINS,以便它们成为值数组。所以数组是..
[1]["VIN NUMBER 123"] [2]["VIN NUMBER 456"]
变成...
[1]["VIN NUMBER 123"]["VALUE1"]
["VALUE2"]
["VALUE3"] [2]["VIN NUMBER 456"]["VALUE2"]
我以为我可以做这样的事情...
<cfset vindex = ArrayFind(myArray,vinToFind)>
<cfif NOT IsArray('myArray[vindex]')>
<cfset myArray[vindex] = ArrayNew(1)>
</cfif>
<cfset temp = ArrayAppend(myArray[vindex],valueToAppend)>
但最后,我的数组仍然是一维的。我做错了什么?
我推荐@ale 建议的数组数组。
<cfset myArray = ArrayNew(1)>
<!--- check if the VIN is already present --->
<cfset vindex = ArrayFind(myArray, vinToFind)>
<!--- the VIN was found --->
<cfif (vindex gt 0)>
<!--- if the VIN is still on its own, transform it to an array --->
<cfif NOT IsArray(myArray[vindex])>
<cfset temp = myArray[vindex]> <!--- remember current VIN --->
<cfset myArray[vindex] = ArrayNew(1)> <!--- transform present index to an array --->
<cfset ArrayAppend(myArray[vindex], temp)> <!--- add VIN back in --->
</cfif>
<!--- add the VIN --->
<cfset ArrayAppend(myArray[vindex], valueToAppend)>
<!--- VIN is not present yet --->
<cfelse>
<cfset ArrayAppend(myArray, valueToAppend)>
</cfif>
这里有一些提示:
ArrayAppend(1)
可以写成[]
.
ArrayAppend(myArray, value)
可以写成myArray.add(value)
.
- 通常不需要存储
ArrayAppend
的 return,因为它总是 return true
。只需使用 <cfset ArrayAppend(myArray, value)>
.
IsArray
需要一个变量,而不是一个字符串。 IsArray("myArray")
将始终 return false
而 IsArray(myArray)
将 return true
.
以上代码使用了数组文字和 add
方法。
<cfset myArray = []>
<!--- check if the VIN is already present --->
<cfset vindex = arrayFind(myArray, vinToFind)>
<!--- the VIN was found --->
<cfif (vindex gt 0)>
<!--- if the VIN is still on its own, transform it to an array --->
<cfif not isArray(myArray[vindex])>
<cfset myArray[vindex] = [ myArray[vindex] ]> <!--- transform present index to an array --->
</cfif>
<!--- add the VIN --->
<cfset myArray[vindex].add(valueToAppend)>
<!--- VIN is not present yet --->
<cfelse>
<cfset myArray.add(valueToAppend)>
</cfif>
我正在使用 CF 10。由于脚本是 运行,我正在创建一个数组,其中包含表示单个车辆的不同值。我正在使用
在我的脚本顶部初始化数组<cfset myArray = ArrayNew(1)>
然后,正如我 运行 我的脚本一样,我将使用...
<cfset temp = ArrayAppend(myArray, myQuery.VIN)>
一切正常,但我想做的是在到达脚本中的每个部分后,我想更新当前部分查询中的所有 VINS,以便它们成为值数组。所以数组是..
[1]["VIN NUMBER 123"] [2]["VIN NUMBER 456"]
变成...
[1]["VIN NUMBER 123"]["VALUE1"] ["VALUE2"] ["VALUE3"] [2]["VIN NUMBER 456"]["VALUE2"]
我以为我可以做这样的事情...
<cfset vindex = ArrayFind(myArray,vinToFind)>
<cfif NOT IsArray('myArray[vindex]')>
<cfset myArray[vindex] = ArrayNew(1)>
</cfif>
<cfset temp = ArrayAppend(myArray[vindex],valueToAppend)>
但最后,我的数组仍然是一维的。我做错了什么?
我推荐@ale 建议的数组数组。
<cfset myArray = ArrayNew(1)>
<!--- check if the VIN is already present --->
<cfset vindex = ArrayFind(myArray, vinToFind)>
<!--- the VIN was found --->
<cfif (vindex gt 0)>
<!--- if the VIN is still on its own, transform it to an array --->
<cfif NOT IsArray(myArray[vindex])>
<cfset temp = myArray[vindex]> <!--- remember current VIN --->
<cfset myArray[vindex] = ArrayNew(1)> <!--- transform present index to an array --->
<cfset ArrayAppend(myArray[vindex], temp)> <!--- add VIN back in --->
</cfif>
<!--- add the VIN --->
<cfset ArrayAppend(myArray[vindex], valueToAppend)>
<!--- VIN is not present yet --->
<cfelse>
<cfset ArrayAppend(myArray, valueToAppend)>
</cfif>
这里有一些提示:
ArrayAppend(1)
可以写成[]
.ArrayAppend(myArray, value)
可以写成myArray.add(value)
.- 通常不需要存储
ArrayAppend
的 return,因为它总是 returntrue
。只需使用<cfset ArrayAppend(myArray, value)>
. IsArray
需要一个变量,而不是一个字符串。IsArray("myArray")
将始终 returnfalse
而IsArray(myArray)
将 returntrue
.
以上代码使用了数组文字和 add
方法。
<cfset myArray = []>
<!--- check if the VIN is already present --->
<cfset vindex = arrayFind(myArray, vinToFind)>
<!--- the VIN was found --->
<cfif (vindex gt 0)>
<!--- if the VIN is still on its own, transform it to an array --->
<cfif not isArray(myArray[vindex])>
<cfset myArray[vindex] = [ myArray[vindex] ]> <!--- transform present index to an array --->
</cfif>
<!--- add the VIN --->
<cfset myArray[vindex].add(valueToAppend)>
<!--- VIN is not present yet --->
<cfelse>
<cfset myArray.add(valueToAppend)>
</cfif>