|
发表于 2007-8-10 11:38:32
|
显示全部楼层
解释一下 (因为name_a与name_b作用相似, 前者处理第一列, 后者处理第二列, 因此只分析name_a):
假设<filename>的内容是:
7 13 a
2 31 b
3 33 a
9 34 b
则在处理之前: name_a 为空数组
处理第一行前, name_a['a']=0; 处理中: $1=7, $3='a', name_a['a'] = 0 + 7; 处理后: name_a['a']=7
处理第二行前: name_a['b']=0; 处理中: $1=2, $3='b', name_a['b'] = 0 + 2; 处理后: name_a['a']=7, name_a['b']=2
处理第三行前, name_a['a']=7; 处理中: $1=3, $3='a', name_a['a'] = 7 + 3; 处理后: name_a['a']=10, name_a['b']=2
类似的, 处理第四行后, name_a['a']=10, name_a['b']=11
END段在全部文件处理完成后运行, i为name_a的下标值, 即i的取值为'a', 'b'. for循环将输出的name_a的值即为name_a['a']和name_a['b']的值, 分别为 10, 11. |
|