免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 草中宝
打印 上一主题 下一主题

如何从数据库取出内容,动态生成二维数组,并打印出这个数组中的元素 [复制链接]

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
11 [报告]
发表于 2015-09-10 18:19 |只看该作者
你不需要明确增加,只要访问到它就会自动地安静地增长到长度8,不会报 ArrayOutOfRange 之类的异常的

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2015-09-10 20:50 |只看该作者
回复 10# 草中宝


    我就不明白了,@rows 是个数组,它的成员也个个是数组(引用)。既然都是数组,那么给它新增成员还有什么要指导的?你用 unshift, push, splice, arr[idx] = val, 都可以达到目的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2015-09-14 09:12 |只看该作者
你的意思是把undef的变量值加入一个数组里面吧?

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-15 06:20:00
14 [报告]
发表于 2015-09-14 09:58 |只看该作者
本帖最后由 草中宝 于 2015-09-14 10:00 编辑
sohusina 发表于 2015-09-14 09:12
你的意思是把undef的变量值加入一个数组里面吧?


楼上的各位高手,不好意思,上周有点忙。需求是这样的,比如数据库中现在的信息如下
id   name         ip                      port      status    stamp
---  ------------  -----------------  --------- --------- -------------------------
1     Server1     192.168.0.101   10000    1           2015-09-10 13:00:01
2     Server2     192.168.0.102   10000    1           2015-09-10 13:00:02
3     Server3     192.168.0.103   10000    1           2015-09-10 13:00:03

一共是3行6列数据。如果只是把上面的这个3行6列信息,放进二维数组中,确实是可以像MMMIX 说的,
my @rows;

while (@arr = $sth->fetchrow_array) {
     push @rows, [@arr];
}

执行后,@rows即是我需要的二维数据。但现在我要把从数据库中取到的3行6列数据信息,先测试下对应的ip是否可以ping通,对应的端口号是否开着的,比如测试结果都是1吧(红色字体表示),
1     Server1     192.168.0.101   10000    1           2015-09-10 13:00:01     1
2     Server2     192.168.0.102   10000    1           2015-09-10 13:00:02     1
3     Server3     192.168.0.103   10000    1           2015-09-10 13:00:03     1

这样就不能简单的
while (@arr = $sth->fetchrow_array) {
     push @rows, [@arr];
}
啦,因为每一行测试的结果“1”还没有加进去呢。或者说在“push @rows, [@arr];”之前,这个增加测试结果的赋值语句该怎么写呢(不是测试语句)。

这样说,大家应该明白我的意思了吧?

请大家别见笑,对perl确实是不懂。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2015-09-14 10:13 来自手机 |只看该作者
本帖最后由 sohusina 于 2015-09-14 10:15 编辑

while里面加入一行,

push @arr,1;

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
16 [报告]
发表于 2015-09-14 10:14 |只看该作者
草中宝 发表于 2015-09-14 09:58
对perl确实是不懂。


可以看出来。所以还是先学学 Perl 的基础知识吧,然后你就不会再在这种基础问题上浪费时间了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2015-09-14 10:19 来自手机 |只看该作者
Perl允许在数组中随时填加新的数组单元,这个时候系统会在新加入数组单元时自动扩展数组的存储空间和长度,所以说,Perl中的数组是动态数组。

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-15 06:20:00
18 [报告]
发表于 2015-09-14 10:27 |只看该作者
感谢MMMIX 、sohusina 、zhlong8 等不厌其烦的回复,我先按sohusina 的方法测试下。

以前没有接触过perl,这段时间看了一下,才知道perl确实太厉害了,能完成太多的工作了。之所以没接触perl,主要是平时工作没有用到perl。公司的项目,底层开发用C++,上层用java,尽管在这个论坛也注册了10多年了,但仍然对perl的用途一直都不明白。

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-15 06:20:00
19 [报告]
发表于 2015-09-14 12:02 |只看该作者
sohusina 发表于 2015-09-14 10:13
while里面加入一行,

push @arr,1;


这个可以,感谢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2015-09-14 20:44 |只看该作者
回复 19# 草中宝


    互相学习。呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP