在每一个哈希键值中存储多个数值

当你需要在哈希表中的每一个键值都存储多个数值,你可以选择在其中存储一个数组而不仅仅是一个变量值。

<!--start banner ad--><!--ba--> <!-- Sniffer Code for Flash 5 --> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) <noembed></noembed><noscript></noscript> <noscript></noscript> <!--end banner ad-->

如果你存储的数据是对应于同一个键值的文本,显而易见,哈希是最好的选择。在哈希的每一个元素中,你只能存储一个变量值。但是使用数组指针就可以使得在哈希的一个元素中存储一个数组指针,指向一个数组。

例如,考虑一下存储那些关联到城市的邮政编码。因为一个城市可以有多个邮政编码,你就需要考虑设计一个数组指针,用于将指针存储到哈希表中去。看看下面这个例子:

{

chomp;

($zip, $state, $city) = split / /;

push @{$zipcodes{"$city, $state"}}, $zip;

}

for $city (sort keys %zipcodes)

{

print "$city: @{$zipcodes{$city}}\n"

}

__DATA__

40502 KY <city></city><place></place>LEXINGTON

40503 KY <city></city><place></place>LEXINGTON

40504 KY <city></city><place></place>LEXINGTON

40505 KY <city></city><place></place>LEXINGTON

40511 KY <city></city><place></place>LEXINGTON

40513 KY <city></city><place></place>LEXINGTON

40514 KY <city></city><place></place>LEXINGTON

40515 KY <city></city><place></place>LEXINGTON

40516 KY <city></city><place></place>LEXINGTON

40517 KY <city></city><place></place>LEXINGTON

40202 KY <city></city><place></place>LOUISVILLE

40213 KY <city></city><place></place>LOUISVILLE

40214 KY <city></city><place></place>LOUISVILLE

40215 KY <city></city><place></place>LOUISVILLE

40217 KY <city></city><place></place>LOUISVILLE

40220 KY <city></city><place></place>LOUISVILLE

40222 KY LYNDON

40241 KY LYNDON

40242 KY LYNDON

如果总是存储一些数组指针,而且只有一个元素,你可以简化代码段。否则,你需要测试哈希的元素,看看这个元素究竟是一个数组指针还是一个简单的变量,这样才能正确地进行操作。

在一个单独的哈希元素中采用使用数组指针来存储多值的方法。

<!-- Sniffer Code for Flash 5 --> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) <noembed></noembed><noscript></noscript> <!-- Sniffer Code for Flash 5 --> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) <noembed></noembed><noscript></noscript>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值