我有一个二维数组。当我打印/转储这个时,我得到以下
My 2 dim array:
push (@matrix, \@a1Comparea2);
push (@matrix, \@a3Comparea4);
a1Comparea2应该是第一行数组 a3Comparea4应该是数组的第二行
$VAR1 = [
[
'1 6',
'2 7',
'3 8',
'4 9',
'5 10'
],
$VAR1->[0],
$VAR1->[0],
$VAR1->[0],
$VAR1->[0],
[
'7 12',
'8 13',
'9 14',
'10 15',
'11 16'
],
$VAR1->[5],
$VAR1->[5],
$VAR1->[5],
$VAR1->[5]
];
当我尝试使用以下代码打印时:
for (my $j= 0; $j < $rows; $j++)
{
for (my $k= 0; $k < @a1; $k++)
{
print "Row:$j Col:$k = $matrix[$j][$k]\n";
}
}
我得到以下输出:
Row:0 Col:0 = 1 6
Row:0 Col:1 = 2 7
Row:0 Col:2 = 3 8
Row:0 Col:3 = 4 9
Row:0 Col:4 = 5 10
Row:1 Col:0 = 1 6
Row:1 Col:1 = 2 7
Row:1 Col:2 = 3 8
Row:1 Col:3 = 4 9
Row:1 Col:4 = 5 10
正如您所看到的那样,数据是重复的。
答案 0 :(得分:3)
您是否正确定义了阵列?
您使用@
表示数组,使用$
表示标量...
请检查此article for a quick reference。
那篇文章给出了这个简单的例子。
@matrix = (
[3, 4, 10],
[2, 7, 12],
[0, 3, 4],
[6, 5, 9],
);
这将创建一个包含四行和三列的数组。要打印数组的元素,请键入:
for($row = 0; $row < 4; $row++) {
for($col = 0; $col < 3; $col++) {
print "$matrix[$row][$col] ";
}
print "\n";
}
答案 1 :(得分:1)
您确定使用过上面显示的代码吗? 也许你使用过类似的东西:
for (my $j= 0; $j < $rows; $j++)
{
for (my $k= 0; $k < @a1; $k++)
{
print "Row:$j Col:$k = $matrix[$not_j][$k]\n";
}
}
$not_j
将始终评估为0,从而产生输出。