在我过去在屏幕上输出后,我有二维数组看起来像这样:
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.
如果有人可以帮助解决这个问题,请告诉我。
答案 0 :(得分:3)
这是你从二维数组中获得输出的方法。
<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>
答案 1 :(得分:0)
您可以通过以下方式修复您的循环:
<cfoutput>
<cfloop array="#myArray#" index="firstDimension">
<cfloop array="#firstDimension#" index="secondDimension">
#secondDimension#<br/>
</cfloop>
</cfloop>
</cfoutput>