【发布时间】:2016-01-27 01:32:49
【问题描述】:
我有一个多维数组散列,代表学生在前四项作业中每个科目的成绩。
my %students_grades = (
Colton => {
English => [ 90, 95, 80, 75 ],
Mathematics => [ 77, 89,94, 100 ],
},
);
语法有点不对,但这里是创建上述数组哈希的代码。
#!/usr/bin/perl
my %students_grades;
$students_grades{'Colton'}{'English'}[0] = 90;
$students_grades{'Colton'}{'English'}[1] = 95;
$students_grades{'Colton'}{'English'}[2] = 80;
$students_grades{'Colton'}{'English'}[3] = 75;
$students_grades{'Colton'}{'History'}[0] = 77;
$students_grades{'Colton'}{'History'}[1] = 89;
$students_grades{'Colton'}{'History'}[2] = 94;
$students_grades{'Colton'}{'History'}[3] = 100;
如何使用 foreach 循环遍历学生在历史中获得的成绩?现在我正在使用 for 循环遍历它。
my $num_of_grades = scalar @{$students_grades{'Colton'}{'History'}};
for (my $i=0; $i <= $num_of_grades; $i++) {
print $students_grades{'Colton'}{'History'}[$i] . "\n";
}
这是我的代码的表示,但在我的实际程序中,我的数组哈希更复杂,所以我想使用 foreach 循环遍历数组的哈希,因为它更容易处理。我该怎么做?
【问题讨论】:
-
你的散列并不是你想的那样多维的。
=>在 Perl 中是一个逗号。你所拥有的是:( 'key: Colton' => 'value: English', 'key: Array(0x123456)' => 'value: Colton', 'key: Mathematics' => [ ... ] ),整体结构是一个哈希(不是一个 hashref)。
标签: arrays perl multidimensional-array hash foreach