【发布时间】:2011-03-19 21:47:45
【问题描述】:
我有一个 CSV 文件,其中包含两组数据 [它来自温度记录器]。我想知道是否有办法将前两行作为一组数据导入,其余作为第二组数据导入。我熟悉 PHP,但从来没有做过这样的事情。我在下面附上了一部分数据。任何帮助或方向将不胜感激。谢谢。
阿杰
Serial Number,Model,Name,Number,Time of Reading,Sample Rate,Start Time
910000000ebeaa4,DS1922T,SRBA04-240909 ,beaa-TNTVLPRP54,9/30/09 16:52,1,9/24/09 18:59
Sample #,Date/Time,Temp ¡F,Temp ¡C,,,
1,"Thu, Sep, 24, 06:59, PM",82.4,28,,,
2,"Thu, Sep, 24, 07:00, PM",83.3,28.5,,,
3,"Thu, Sep, 24, 07:01, PM",83.3,28.5,,,
4,"Thu, Sep, 24, 07:02, PM",83.3,28.5,,,
5,"Thu, Sep, 24, 07:03, PM",83.3,28.5,,,
6,"Thu, Sep, 24, 07:04, PM",83.3,28.5,,,
7,"Thu, Sep, 24, 07:05, PM",83.3,28.5,,,
8,"Thu, Sep, 24, 07:06, PM",83.3,28.5,,,
9,"Thu, Sep, 24, 07:07, PM",83.3,28.5,,,
10,"Thu, Sep, 24, 07:08, PM",83.3,28.5,,,
解决方案,基于下面 deceze 的评论
deceze,谢谢。这有效[就像 sql 插入一样]。非常感谢。
<?php
$fhandle = fopen('1.csv', 'r');
$device_header = fgetcsv($fhandle, 1000, ',');
$device_data = fgetcsv($fhandle,1000,',');
$device = array_combine($device_header, $device_data);
$data_header = fgetcsv($fhandle,1000,',');
$dataset = array();
while ($data = fgetcsv($fhandle,1000,',')) {
$dataset[] = array_combine($data_header, $data);
}
fclose($fhandle);
?>
【问题讨论】:
-
expects array, boolean given表示对fgetcsv($fhandle)的调用可能在某个时候返回false。您必须进行更多的错误处理,我只是向您展示一般方法。不要只是复制和粘贴代码而不了解它的作用。至于 SQL,您应该能够使用生成的$set1和$set2数组插入该数据。我不明白您要附加什么,但同样,如果您尝试理解代码,您可以对其进行自定义以满足您的需求。 -
酷,谢谢。非常感谢您的帮助。