0

我有两个哈希数组:AH1 和 AH2。

$AH1 = [  
          {
            'id' => 123,  
            'name' => abc
          },  
          {
            'id' => 456,  
            'name' => def
          },  
          {
            'id' => 789,  
            'name' => ghi
          },  
          {
            'id' => 101112,  
            'name' => jkl
          },  
          {
            'id' => 1389,  
            'name' => mno
          }  
        ];  

$AH2 = [  
          {
            'id' => 123,  
            'name' => abc
          },  
          {
            'id' => 1389,  
            'name' => mno
          },  
          {
            'id' => 779,  
            'name' => ghi
          }  
        ];  

如何使用 Perl存在函数打印 AH2 中的 AH1 的哈希值?或者不必在数组中迭代。

4

1 回答 1

1

exists按索引定位,它们是 0,1,2,而不是 123,1389,779。exists没办法。

此外,您必须遍历两个数组(一种或另一种方式),除非您将其中一个数组切换为散列。

$HH2 = {
   123 =>  {
             'id' => 123,  
             'name' => abc
           },  
   1389 => {
            'id' => 1389,  
            'name' => mno
           },  
   779  => {
             'id' => 779,  
             'name' => ghi
           }
};

事实上,切换是解决这个问题的最简单方法。

my %HH2 = map { $_->{id} => $_ } @$AH2;
for (@$AH1) {
    print "$_->{id} in both\n"
       if $HH2{ $_->{id} };
}

它也非常有效:您只对每个数组进行一次迭代。

于 2012-08-28T18:56:43.483 回答