2.5 perl--二维哈希
二维哈希:
使用$hash{$key1}{$key2} = $value;
遍历(注意加粗与加下划线的语句)
foreach my $key1 (sort keys %hash) #首先对key1进行排序
{
foreach my $key2 (sort {$hash{$key1}->{$b}<=>$hash{$key1}->{a}} keys %{$hash{$key1}}) #对value值按照数字大小进行逆序排序
# foreach my $key2 (sort {$a<=>$b} keys %{$hash{$key1}})
#对key2按照数字大小进行排序
{
print $key1."t".$key2."t".$hash{$key1}->{$key2}."n";
}
}
对比单维哈希
foreach my $key (sort{$hash{$b}<=>$hash{$a}} keys %hash) #标红的是什么意思呢?
{
print $key."t".$hash{$key}."n";
}
对比数组
方法一:@array2 = sort(@array)
方法二(遍历):
foreach my $a (sort @array){
print $a. "t";
}
查看二维哈希
use strict;
use warnings;
my %hash=(a=>{1=>10,2=>20},b=>{3=>30,4=>40});
foreach my $key1 (keys(%hash))
{
print("\$hash{$key1} has keys:".join(',',keys(%{$hash{$key1}})),"\n");
}
实际中的应用:
比如一个二维Hash:
$VAR1 = {
'0' => {
'lu_id' => '529',
'lu_contract_id' => ' ',
'lu_name' => '上海XXXX科技有限公司',
'lu_loginid' => '上海XXXX'
}
};
'1' => {
'lu_id' => '784',
'lu_contract_id' => ' ',
'lu_name' => '北京XXXX广告'
'lu_loginid' => '北京XXXX'
}
};
现在想把里面所有的lu_id组成一个列表,程序如下:
foreach my $key (sort keys %hash) {
my $value = $hash{$key};
push @list,$value->{"lu_id"};
}
参考资料:
- Tech && Test http://tech.mclarian.com/a/260
- angelia的博客 http://blog.sina.com.cn/s/blog_607254630101d2a4.html
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn