免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1957 | 回复: 2
打印 上一主题 下一主题

请教关于这个二维hash [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-28 11:43 |只看该作者 |倒序浏览
  1. %hash=(1,[1,2,3],2,[2,3,4],3,[3,4,5]);
  2. foreach (sort keys %hash){[color=red]$[/color]list=$hash{$_};$x=$list->;[0];$y=$list->;[1];$z=$list->;[2];print $x,$y,$z,"\n";}
复制代码


  DB<5>; foreach (sort keys %hash){$list=$hash{$_};$x=$list->;[0];$y=$list
->;[1];$z=$list->;[2];print $x,$y,$z,"\n";}
123
234
345

换成
  1. %hash=(1,[1,2,3],2,[2,3,4],3,[3,4,5]);
  2. foreach (sort keys %hash){[color=red]@[/color]list=$hash{$_};$x=$list->;[0];$y=$list->;[1];$z=$list->;[2];print $x,$y,$z,"\n";}
复制代码


  DB<8>; foreach (sort keys %hash){@list=$hash{$_};$x=$list->;[0];$y=$list->;[1];$z
=$list->;[2];print $x,$y,$z,"\n";}
345
345
345

错误~

  DB<14>; foreach (sort keys %hash){@list=$hash{$_};print $list[0][0],$list[0][1]
;}
122334

  DB<18>; foreach (sort keys %hash){@list=$hash{$_};print $list[0][0],$list[0][2]
;}
132435

出现的又是另一个样~



请教在这里$和@的区别?为什么定义成@list又会出现下面的这些情况?
多谢了

论坛徽章:
0
2 [报告]
发表于 2005-08-28 12:05 |只看该作者

请教关于这个二维hash

原帖由 "the0crat" 发表:
132435

出现的又是另一个样~



请教在这里$和@的区别?为什么定义成@list又会出现下面的这些情况?
多谢了


[1,2,3]是个匿名数组,它实际是个数组的引用,所以
$list=[1,2,3]表示将该引用赋值给$list,你可以使用@$list来反引用这个数组;
z 这时@$list=(1,2,3);你可以这样访问数组元素:
$$list[0],其值为1;或者$list->;[0]也是一样的。

由于引用实际是个内存地址,当然不能直接@list=[1,2,3]运算了。

论坛徽章:
0
3 [报告]
发表于 2005-08-28 15:28 |只看该作者

请教关于这个二维hash

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP