php下把文件中行数据转换为数组

    问题的背景是设置在数据迁移过程中的,需求是这样的,把数据库中的表数据导入到文件中,然后读取此文件,把数据写入到另一个库中。

从数据库中把表数据导出到文件的命令为:image

 

命令也可以写成:myql -uroot -pmysql test -e "select * from tickets" > /tmp/ticket.txt

其中,test指的是数据库的名称,这样,数据会导入到/tmp/ticket.txt文件中,其中第一行为字段名称,文件如下:

image

总体的思路是:把数据的每一行作为一个数组,其中key为第一行的字段值,关键代码如下:

 1 <?php
 2 $file = fopen("/tmp/ticket.txt", "r");
 3 
 4 $line = fgets($file);
 5 
 6 // 数据之间的分隔符默认为"\t",行分隔符为"\n"
 7 // 把第一行转换为数组
 8 $key = explode("\t", trim($line, "\n"));
 9 print_r($key);
10 
11 // 循环处理每一行
12 while(!feof($file)) {
13     $line = fgets($file);
14     if ($line) {
15 
16         // array_combine要求两个数组的大小是一致的,否则会返回false
17         $data = array_combine($key, explode("\t", trim($line, "\n")));
18         print_r($data);
19     }
20 }
21 
22 fclose($file);

这样,$data 就是我们要求的数据,就像从数据库中读出的。

posted @ 2012-12-26 22:10  小丁  阅读(698)  评论(0编辑  收藏  举报