나는 배열 a1과 배열 배열 a2를가집니다. 해시의 값에 배열의 배열을 추가하는 방법
@a2 = [ [adf],[bcg],[yet],[gpd],[iop]]
@a1 = [1,2,3,4,5]
및
는 이제 값 A1 A2 등의 키 배열이 어디에 해시를 원한다. 어떻게해야합니까?나는 배열 a1과 배열 배열 a2를가집니다. 해시의 값에 배열의 배열을 추가하는 방법
@a2 = [ [adf],[bcg],[yet],[gpd],[iop]]
@a1 = [1,2,3,4,5]
및
는 이제 값 A1 A2 등의 키 배열이 어디에 해시를 원한다. 어떻게해야합니까?여기에는 몇 가지 방법이 있습니다. 귀하의 문법은 귀하의 질문에 조금 떨어져 있으므로 내 변수 선언은 당신이 원하는 것이라고 가정 할 것입니다.
my @a1 = (1,2,3,4,5);
my @a2 = (["a", "d", "f"], ["b", "c", "g"], ["y","e","t"],
["g", "p", "d"], ["i", "o", "p"]);
# Thus $a2[0][1] => "d", etc.
#Perl 5.12 and higher you can use "each" on an array
my %a3;
while (my ($a1_index, $a1_value) = each @a1) {
$a3{$a1_value} = $a2[$a1_index];
}
# Now @{$a3{4}} => ["g", "p", "d"] for example
# Before 5.12 you would have to do something like this:
my %a4;
for my $i (0..$#a1) {
$a4{$a1[$i]} = $a2[$i];
}
# Now @{$a4{4}} => ["g", "p", "d"]
my @keys = (1,2,3,4,5);
my @vals = (["a", "d", "f"], ["b", "c", "g"], ["y","e","t"],
["g", "p", "d"], ["i", "o", "p"]);
my $hash={};
for(my $i = 0; $i < scalar(@keys); $i++){
$hash->{$keys[$i]}=$vals[$i];
}
#print the resulted hash
use Data::Dumper;print Dumper($hash);
결과 같다 : $ VAR1 = { '4'=> [ 'g' 'P', 'D' ] '1'의 = > [ 'A', 'D', 'F' , '3'=> [ 'Y', 'E', 't' ] '2'=> [ 'B', 'C', 'g' ] '5'=> [ '나' 'O', 'P ' ] };
Perl 해시는 순서가 지정되지 않으므로 여기에 인쇄되는 순서에 대해 걱정할 필요가 없습니다. 필요한 경우 숫자 키를 기준으로 정렬 할 수 있습니다.