ColdFusion-动态创建多维阵列



我正在使用CF 10.在运行脚本时,我正在创建一个包含代表单个车辆的不同值的数组。我正在使用

在我的脚本顶部初始化数组
<cfset myArray = ArrayNew(1)>

然后,当我运行脚本时,我会使用...

附加到它上
<cfset temp = ArrayAppend(myArray, myQuery.VIN)>

这一切都很好,但是我想做的是在达到脚本中的每个部分之后,我想更新当前部分查询中的任何VIN,以便它们是一个值。所以阵列是..

[1] [" VIN Number 123"] [2] [" VIN号456"]

变成...

[1] [" VIN编号123"] [" value1"] [" value2"] [" value3"] [2] [" VIN号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>

这里有一些提示:

  1. ArrayAppend(1)可以写为[]
  2. ArrayAppend(myArray, value)可以写为myArray.add(value)
  3. 通常无需存储ArrayAppend的返回,因为它始终将返回true。只需使用<cfset ArrayAppend(myArray, value)>
  4. IsArray期望一个变量,而不是字符串。IsArray("myArray")将始终返回false,而IsArray(myArray)将返回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>

最新更新