如何遍历二维数组?
How to loop through 2 dimensional array?
我以前在屏幕上输出后,我有一个看起来像这样的二维数组:
array
1
array
1 0600
2
array
1 0
3
array
1 0600
4
array
1 0
5
array
1 0615
6
array
1 0
7
array
1 0615
8
array
1 0
9
array
1 0630
10
array
1 0
11
array
1 0630
12
array
1 1
所以我想按以下顺序遍历我的数组和输出值:
0600 0
0600 0
0615 0
0615 0
0630 0
0630 1
这是我创建数组的代码:
<cfloop list="#ListGetAt(dataList,i,",")#" index="z" delimiters="|">
<cfoutput query="getR" group="theYear">
<cfset name = myArray.append([z])>
<cfif Description eq z>
<cfset count = myArray.append([theCount])>
<cfelse>
<cfset count = myArray.append([0])>
</cfif>
</cfoutput>
</cfloop>
那么我现在如何循环才能按照上面显示的顺序获取这两条记录?我试过了,但没有用:
<cfoutput>
<cfloop from="1" to="#arraylen(myArray)#" index="i">
<cfloop array="#myArray#" index="j">
#i# - #myArray[1][j]#<br/>
</cfloop>
</cfloop>
</cfoutput>
编辑: 当我使用这段代码时:
<cfloop array="#myArray#" index="i">
<cfloop array="#myArray#" index="j">
<cfoutput> #myArray[i][j]#<br/> </cfoutput>
</cfloop>
</cfloop>
我收到这个错误:
The value coldfusion.runtime.Array cannot be converted to a number.
如果有人可以帮助解决这个问题,请告诉我。
这就是您从二维数组中获取输出的方式。
<cfscript>
data = [
["0600", 0],
["0600", 0],
["0615", 0],
["0615", 0],
["0630", 0],
["0630", 1]
];
// script version
for (foo in data) {
writeOutput(foo[1] & " " & foo[2] & "<br>");
}
</cfscript>
<cfoutput>
tag version...<br>
<cfloop array="#data#" index="foo">
#foo[1]# #foo[2]#<br>
</cfloop>
</cfoutput>
此处使用的示例:http://trycf.com/gist/86b42b56ef7348ec0d44/acf2016?theme=monokai
但是,当结构数组(键值对)似乎是一种更简单的方法时,我不确定您为什么要使用二维数组:
例如:
<cfscript>
data = [
{key:"0600", count:0},
{key:"0600", count:0},
{key:"0615", count:0},
{key:"0615", count:0},
{key:"0630", count:0},
{key:"0630", count:1}
];
// script version
for (foo in data) {
writeoutput(foo.key & " " & foo.count & "<br>");
}
</cfscript>
<cfoutput>
tag version...<br>
<cfloop array="#data#" index="foo">
#foo.key# #foo.count#<br>
</cfloop>
</cfoutput>
您可以通过以下方式修复循环:
<cfoutput>
<cfloop array="#myArray#" index="firstDimension">
<cfloop array="#firstDimension#" index="secondDimension">
#secondDimension#<br/>
</cfloop>
</cfloop>
</cfoutput>
我以前在屏幕上输出后,我有一个看起来像这样的二维数组:
array
1
array
1 0600
2
array
1 0
3
array
1 0600
4
array
1 0
5
array
1 0615
6
array
1 0
7
array
1 0615
8
array
1 0
9
array
1 0630
10
array
1 0
11
array
1 0630
12
array
1 1
所以我想按以下顺序遍历我的数组和输出值:
0600 0
0600 0
0615 0
0615 0
0630 0
0630 1
这是我创建数组的代码:
<cfloop list="#ListGetAt(dataList,i,",")#" index="z" delimiters="|">
<cfoutput query="getR" group="theYear">
<cfset name = myArray.append([z])>
<cfif Description eq z>
<cfset count = myArray.append([theCount])>
<cfelse>
<cfset count = myArray.append([0])>
</cfif>
</cfoutput>
</cfloop>
那么我现在如何循环才能按照上面显示的顺序获取这两条记录?我试过了,但没有用:
<cfoutput>
<cfloop from="1" to="#arraylen(myArray)#" index="i">
<cfloop array="#myArray#" index="j">
#i# - #myArray[1][j]#<br/>
</cfloop>
</cfloop>
</cfoutput>
编辑: 当我使用这段代码时:
<cfloop array="#myArray#" index="i">
<cfloop array="#myArray#" index="j">
<cfoutput> #myArray[i][j]#<br/> </cfoutput>
</cfloop>
</cfloop>
我收到这个错误:
The value coldfusion.runtime.Array cannot be converted to a number.
如果有人可以帮助解决这个问题,请告诉我。
这就是您从二维数组中获取输出的方式。
<cfscript>
data = [
["0600", 0],
["0600", 0],
["0615", 0],
["0615", 0],
["0630", 0],
["0630", 1]
];
// script version
for (foo in data) {
writeOutput(foo[1] & " " & foo[2] & "<br>");
}
</cfscript>
<cfoutput>
tag version...<br>
<cfloop array="#data#" index="foo">
#foo[1]# #foo[2]#<br>
</cfloop>
</cfoutput>
此处使用的示例:http://trycf.com/gist/86b42b56ef7348ec0d44/acf2016?theme=monokai
但是,当结构数组(键值对)似乎是一种更简单的方法时,我不确定您为什么要使用二维数组:
例如:
<cfscript>
data = [
{key:"0600", count:0},
{key:"0600", count:0},
{key:"0615", count:0},
{key:"0615", count:0},
{key:"0630", count:0},
{key:"0630", count:1}
];
// script version
for (foo in data) {
writeoutput(foo.key & " " & foo.count & "<br>");
}
</cfscript>
<cfoutput>
tag version...<br>
<cfloop array="#data#" index="foo">
#foo.key# #foo.count#<br>
</cfloop>
</cfoutput>
您可以通过以下方式修复循环:
<cfoutput>
<cfloop array="#myArray#" index="firstDimension">
<cfloop array="#firstDimension#" index="secondDimension">
#secondDimension#<br/>
</cfloop>
</cfloop>
</cfoutput>